You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.2 KiB
64 lines
1.2 KiB
//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 |
|
} |