6
1
mirror of https://git.mills.io/saltyim/saltyim.git synced 2024-06-28 09:41:02 +00:00
prologic-saltyim/internal/bitcask_store.go
James Mills be4b4a5e9d Add a basic structure for a go-app PWA + integrated Broker (#36)
Co-authored-by: James Mills <prologic@shortcircuit.net.au>
Co-authored-by: Jon Lundy <jon@xuu.cc>
Reviewed-on: https://git.mills.io/prologic/saltyim/pulls/36
2022-03-21 22:27:35 +00:00

57 lines
992 B
Go

package internal
import (
"git.mills.io/prologic/bitcask"
log "github.com/sirupsen/logrus"
)
// BitcaskStore ...
type BitcaskStore struct {
db *bitcask.Bitcask
}
func newBitcaskStore(path string) (*BitcaskStore, error) {
db, err := bitcask.Open(
path,
bitcask.WithMaxKeySize(256),
)
if err != nil {
return nil, err
}
return &BitcaskStore{db: db}, nil
}
// Sync ...
func (bs *BitcaskStore) Sync() error {
return bs.db.Sync()
}
// Close ...
func (bs *BitcaskStore) Close() error {
log.Info("syncing store ...")
if err := bs.db.Sync(); err != nil {
log.WithError(err).Error("error syncing store")
return err
}
log.Info("closing store ...")
if err := bs.db.Close(); err != nil {
log.WithError(err).Error("error closing store")
return err
}
return nil
}
// Merge ...
func (bs *BitcaskStore) Merge() error {
log.Info("merging store ...")
if err := bs.db.Merge(); err != nil {
log.WithError(err).Error("error merging store")
return err
}
return nil
}