stead from pg

This commit is contained in:
Bel LaPointe
2026-03-09 09:02:16 -06:00
parent 4bf673461e
commit cc18763944
9 changed files with 318 additions and 0 deletions

46
kv.go Normal file
View File

@@ -0,0 +1,46 @@
package with
import (
"context"
"database/sql"
)
type SQLKV struct {
db *sql.DB
}
func KV(ctx context.Context, db *sql.DB, foo func(SQLKV) error) error {
if _, err := db.ExecContext(ctx, `
CREATE TABLE IF NOT EXISTS with_kv(
k TEXT PRIMARY KEY
, v TEXT
)
`); err != nil {
return err
}
return foo(SQLKV{db: db})
}
func (kv SQLKV) Get(ctx context.Context, k string) ([]byte, error) {
row := kv.db.QueryRowContext(ctx, `
SELECT v FROM with_kv WHERE k=$1
`, k)
var v []byte
if err := row.Scan(&v); err != nil {
return nil, err
}
return v, row.Err()
}
func (kv SQLKV) Set(ctx context.Context, k string, v []byte) error {
_, err := kv.db.ExecContext(ctx, `
INSERT INTO with_kv
(k, v) VALUES ($1, $2)
ON CONFLICT DO UPDATE
SET v=$2 WHERE k=$1
`, k, v)
return err
}