mirror of
https://git.mills.io/saltyim/saltyim.git
synced 2024-06-28 09:41:02 +00:00
![James Mills](/assets/img/avatar_default.png)
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
57 lines
992 B
Go
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
|
|
}
|