First commit
This commit is contained in:
71
scripts/schema.sql
Normal file
71
scripts/schema.sql
Normal file
@@ -0,0 +1,71 @@
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sources (
|
||||
id INTEGER PRIMARY KEY,
|
||||
url TEXT UNIQUE,
|
||||
title TEXT,
|
||||
publisher TEXT,
|
||||
date_published TEXT,
|
||||
content TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS summaries (
|
||||
id INTEGER PRIMARY KEY,
|
||||
source_id INTEGER REFERENCES sources(id) ON DELETE SET NULL,
|
||||
title TEXT NOT NULL,
|
||||
summary TEXT NOT NULL,
|
||||
newsletter_date TEXT,
|
||||
tone_version TEXT,
|
||||
created_at TEXT DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tags (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT UNIQUE
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS source_tags (
|
||||
source_id INTEGER REFERENCES sources(id) ON DELETE CASCADE,
|
||||
tag_id INTEGER REFERENCES tags(id) ON DELETE CASCADE,
|
||||
PRIMARY KEY(source_id, tag_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS embeddings (
|
||||
id INTEGER PRIMARY KEY,
|
||||
ref_table TEXT NOT NULL CHECK(ref_table IN ('sources','summaries')),
|
||||
ref_id INTEGER NOT NULL,
|
||||
model TEXT NOT NULL,
|
||||
dim INTEGER NOT NULL,
|
||||
vec BLOB NOT NULL,
|
||||
UNIQUE(ref_table, ref_id, model)
|
||||
);
|
||||
|
||||
CREATE VIRTUAL TABLE IF NOT EXISTS sources_fts USING fts5(
|
||||
title, content, content='sources', content_rowid='id'
|
||||
);
|
||||
CREATE VIRTUAL TABLE IF NOT EXISTS summaries_fts USING fts5(
|
||||
title, summary, content='summaries', content_rowid='id'
|
||||
);
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS sources_ai AFTER INSERT ON sources BEGIN
|
||||
INSERT INTO sources_fts(rowid, title, content) VALUES (new.id, new.title, new.content);
|
||||
END;
|
||||
CREATE TRIGGER IF NOT EXISTS sources_au AFTER UPDATE ON sources BEGIN
|
||||
INSERT INTO sources_fts(sources_fts, rowid, title, content)
|
||||
VALUES('delete', old.id, old.title, old.content);
|
||||
INSERT INTO sources_fts(rowid, title, content) VALUES (new.id, new.title, new.content);
|
||||
END;
|
||||
CREATE TRIGGER IF NOT EXISTS sources_ad AFTER DELETE ON sources BEGIN
|
||||
INSERT INTO sources_fts(sources_fts, rowid, title, content) VALUES('delete', old.id, old.title, old.content);
|
||||
END;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS summaries_ai AFTER INSERT ON summaries BEGIN
|
||||
INSERT INTO summaries_fts(rowid, title, summary) VALUES (new.id, new.title, new.summary);
|
||||
END;
|
||||
CREATE TRIGGER IF NOT EXISTS summaries_au AFTER UPDATE ON summaries BEGIN
|
||||
INSERT INTO summaries_fts(summaries_fts, rowid, title, summary)
|
||||
VALUES('delete', old.id, old.title, old.summary);
|
||||
INSERT INTO summaries_fts(rowid, title, summary) VALUES (new.id, new.title, new.summary);
|
||||
END;
|
||||
CREATE TRIGGER IF NOT EXISTS summaries_ad AFTER DELETE ON summaries BEGIN
|
||||
INSERT INTO summaries_fts(summaries_fts, rowid, title, summary) VALUES('delete', old.id, old.title, old.summary);
|
||||
END;
|
Reference in New Issue
Block a user