Adding the challenge 0303
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package db0303
|
||||
|
||||
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/
|
||||
Reference in New Issue
Block a user