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`
|