35 lines
849 B
Go
35 lines
849 B
Go
package kvstore
|
|
|
|
const sqlSchema = `
|
|
BEGIN IMMEDIATE;
|
|
|
|
CREATE TABLE IF NOT EXISTS kv(
|
|
Collection TEXT NOT NULL,
|
|
ID INTEGER NOT NULL,
|
|
Data BLOB,
|
|
PRIMARY KEY (Collection, ID)
|
|
) WITHOUT ROWID;
|
|
|
|
CREATE TABLE IF NOT EXISTS maxSeqNum(
|
|
ID INTEGER NOT NULL PRIMARY KEY,
|
|
Value INTEGER NOT NULL
|
|
) WITHOUT ROWID;
|
|
|
|
INSERT INTO maxSeqNum(ID, Value) VALUES (1, 0) ON CONFLICT DO NOTHING;
|
|
|
|
COMMIT;`
|
|
|
|
const sqlKVUpsert = `
|
|
INSERT INTO kv
|
|
(Collection,ID,Data) VALUES (?,?,?)
|
|
ON CONFLICT(Collection,ID) DO UPDATE SET
|
|
Data=excluded.Data
|
|
WHERE
|
|
ID=excluded.ID`
|
|
|
|
const sqlKVDelete = `DELETE FROM kv WHERE Collection=? AND ID=?`
|
|
const sqlKVIterate = `SELECT ID,Data FROM kv WHERE Collection=?`
|
|
|
|
const sqlMaxSeqNumGet = `SELECT Value FROM maxSeqNum WHERE ID=1`
|
|
const sqlMaxSeqNumSet = `UPDATE maxSeqNum SET Value=? WHERE ID=1`
|