// InsertEntry inserts an entry func (db *Overlay) InsertEntry(entry interfaces.IEBEntry) error { if entry == nil { return nil } //Entries are saved in buckets represented by their chainID for easy batch loading //They are also indexed in ENTRY bucket by their hash that points to their chainID //So they can be loaded in two load operations without needing to know their chainID batch := []interfaces.Record{} batch = append(batch, interfaces.Record{entry.GetChainID().Bytes(), entry.DatabasePrimaryIndex().Bytes(), entry}) batch = append(batch, interfaces.Record{ENTRY, entry.DatabasePrimaryIndex().Bytes(), entry.GetChainIDHash()}) return db.PutInBatch(batch) }