Files
db_in_45_steps_go/0301/table.go
T
2026-07-29 22:54:42 +02:00

46 lines
1.1 KiB
Go

package db0301
type DB struct {
KV KV
}
func (db *DB) Open() error { return db.KV.Open() }
func (db *DB) Close() error { return db.KV.Close() }
func (db *DB) Select(schema *Schema, row Row) (ok bool, err error) {
key := row.EncodeKey(schema)
val, ok, err := db.KV.Get(key)
if err != nil || !ok {
return ok, err
}
if err = row.DecodeVal(schema, val); err != nil {
return false, err
}
return true, nil
}
func (db *DB) Insert(schema *Schema, row Row) (updated bool, err error) {
key := row.EncodeKey(schema)
val := row.EncodeVal(schema)
return db.KV.SetEx(key, val, ModeInsert)
}
func (db *DB) Upsert(schema *Schema, row Row) (updated bool, err error) {
key := row.EncodeKey(schema)
val := row.EncodeVal(schema)
return db.KV.SetEx(key, val, ModeUpsert)
}
func (db *DB) Update(schema *Schema, row Row) (updated bool, err error) {
key := row.EncodeKey(schema)
val := row.EncodeVal(schema)
return db.KV.SetEx(key, val, ModeUpdate)
}
func (db *DB) Delete(schema *Schema, row Row) (deleted bool, err error) {
key := row.EncodeKey(schema)
return db.KV.Del(key)
}
// QzBQWVJJOUhU https://trialofcode.org/