Add versioning, update tool, and soft-delete

Schema: public_id + version columns with UNIQUE constraint,
delete_timestamp for soft-delete.

Tools: store_flashcard accepts optional public_id, update_flashcard
creates a new version preserving history, delete_flashcard inserts
a tombstone row and removes the Qdrant point.

Qdrant: point ID is public_id (only latest version indexed).
This commit is contained in:
didier committed 2026-06-03 20:15:18 -04:00
1 parent 726ab62c62
commit e700a81c25
10 files changed
+352 -72

No files matched your search

+18
View File
@@ -0,0 +1,18 @@
-- +goose Up
CREATE TABLE IF NOT EXISTS flashcard (
_id INTEGER PRIMARY KEY,
public_id INTEGER NOT NULL,
version INTEGER NOT NULL DEFAULT 1,
note TEXT NOT NULL,
repos TEXT,
host TEXT,
tags TEXT,
"user" TEXT,
context TEXT,
delete_timestamp TEXT,
created TEXT NOT NULL DEFAULT (datetime('now')),
UNIQUE(public_id, version)
);
-- +goose Down
DROP TABLE IF EXISTS flashcard;
-14
View File
@@ -1,14 +0,0 @@
-- +goose Up
CREATE TABLE IF NOT EXISTS knowledge (
id INTEGER PRIMARY KEY,
note TEXT NOT NULL,
repos TEXT,
host TEXT,
tags TEXT,
"user" TEXT,
context TEXT,
created TEXT NOT NULL DEFAULT (datetime('now'))
);
-- +goose Down
DROP TABLE IF EXISTS knowledge;
+10
View File
@@ -0,0 +1,10 @@
-- +goose Up
ALTER TABLE flashcard ADD COLUMN public_id INTEGER NOT NULL DEFAULT 0;
ALTER TABLE flashcard ADD COLUMN version INTEGER NOT NULL DEFAULT 1;
UPDATE flashcard SET public_id = _id WHERE public_id = 0;
CREATE UNIQUE INDEX IF NOT EXISTS idx_flashcard_public_id_version ON flashcard(public_id, version);
-- +goose Down
DROP INDEX IF EXISTS idx_flashcard_public_id_version;
ALTER TABLE flashcard DROP COLUMN version;
ALTER TABLE flashcard DROP COLUMN public_id;
@@ -0,0 +1,5 @@
-- +goose Up
ALTER TABLE flashcard ADD COLUMN delete_timestamp TEXT;
-- +goose Down
ALTER TABLE flashcard DROP COLUMN delete_timestamp;