refactor(KeySpec): moves over to a unified KeySpec struct for parsing

This commit is contained in:
Lewis Wynne 2025-12-18 12:29:08 +00:00
parent 3d4cd40a17
commit 0c0de52a6e
4 changed files with 85 additions and 38 deletions

View file

@ -61,12 +61,12 @@ type TransactionArgs struct {
}
func (s *Store) Transaction(args TransactionArgs) error {
k, dbName, err := s.parse(args.key, true)
spec, err := s.parseKey(args.key, true)
if err != nil {
return err
}
db, err := s.open(dbName)
db, err := s.open(spec.DB)
if err != nil {
return err
}
@ -82,7 +82,7 @@ func (s *Store) Transaction(args TransactionArgs) error {
tx := db.NewTransaction(!args.readonly)
defer tx.Discard()
if err := args.transact(tx, k); err != nil {
if err := args.transact(tx, []byte(spec.Key)); err != nil {
return err
}
@ -162,22 +162,8 @@ func (s *Store) FindStore(k string) (string, error) {
return path, nil
}
func (s *Store) parse(k string, defaults bool) ([]byte, string, error) {
var key, db string
ps := strings.Split(k, "@")
switch len(ps) {
case 1:
key = strings.ToLower(ps[0])
if defaults {
db = "default"
}
case 2:
key = strings.ToLower(ps[0])
db = strings.ToLower(ps[1])
default:
return nil, "", fmt.Errorf("bad key format, use KEY@DB")
}
return []byte(key), db, nil
func (s *Store) parseKey(raw string, defaults bool) (KeySpec, error) {
return ParseKey(raw, defaults)
}
func (s *Store) parseDB(v string, defaults bool) (string, error) {