mdb/types.go

37 lines
718 B
Go

package mdb
/*
Copyright (c) 2022, John David Lee
All rights reserved.
This source code is licensed under the BSD-style license found in the
LICENSE file in the root directory of this source tree.
*/
type WALStatus struct {
MaxSeqNumKV uint64
MaxSeqNumWAL uint64
}
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(uint64, []byte) // For WAL following.
onDelete(uint64) // For WAL following.
}