package mdb type WALStatus struct { MaxID uint64 // TODO: WALMaxSeqNum MaxAppliedID uint64 // TODO: KVMaxSeqNum } type itemIndex[T any] interface { load(m map[uint64]*T) error insert(*T) update(old, new *T) // Old and new MUST have the same ID. delete(*T) } type itemUniqueIndex[T any] interface { load(m map[uint64]*T) error name() string lock(*T) unlock(*T) insertConflict(*T) bool updateConflict(*T) bool } type dbCollection interface { loadData() onStore(string, uint64, []byte) // For WAL following. onDelete(string, uint64) // For WAL following. }