64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
//go:build !(js && wasm)
|
|
|
|
package database
|
|
|
|
import (
|
|
"github.com/dgraph-io/badger/v4"
|
|
"lol.mleku.dev/chk"
|
|
)
|
|
|
|
const (
|
|
markerPrefix = "MARKER:"
|
|
)
|
|
|
|
// SetMarker stores an arbitrary marker in the database
|
|
func (d *D) SetMarker(key string, value []byte) (err error) {
|
|
markerKey := []byte(markerPrefix + key)
|
|
|
|
err = d.Update(func(txn *badger.Txn) error {
|
|
return txn.Set(markerKey, value)
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// GetMarker retrieves an arbitrary marker from the database
|
|
func (d *D) GetMarker(key string) (value []byte, err error) {
|
|
markerKey := []byte(markerPrefix + key)
|
|
|
|
err = d.View(func(txn *badger.Txn) error {
|
|
item, err := txn.Get(markerKey)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
value, err = item.ValueCopy(nil)
|
|
return err
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// HasMarker checks if a marker exists in the database
|
|
func (d *D) HasMarker(key string) (exists bool) {
|
|
markerKey := []byte(markerPrefix + key)
|
|
|
|
err := d.View(func(txn *badger.Txn) error {
|
|
_, err := txn.Get(markerKey)
|
|
return err
|
|
})
|
|
|
|
exists = !chk.E(err)
|
|
return
|
|
}
|
|
|
|
// DeleteMarker removes a marker from the database
|
|
func (d *D) DeleteMarker(key string) (err error) {
|
|
markerKey := []byte(markerPrefix + key)
|
|
|
|
err = d.Update(func(txn *badger.Txn) error {
|
|
return txn.Delete(markerKey)
|
|
})
|
|
|
|
return
|
|
} |