Added episodic layer with FTS5 triggers and search
This commit is contained in:
@@ -13,6 +13,11 @@ function getDB() {
|
||||
db.pragma('foreign_keys = ON');
|
||||
|
||||
db.exec(schema);
|
||||
|
||||
// Sync FTS index with any existing episodes data
|
||||
db.exec(`INSERT OR REPLACE INTO episodes_fts(rowid, user_message, ai_response)
|
||||
SELECT id, user_message, ai_response FROM episodes`);
|
||||
|
||||
console.log(`Connected to SQLite database at ${path}`);
|
||||
}
|
||||
return db;
|
||||
|
||||
@@ -58,6 +58,26 @@ const schema = `
|
||||
|
||||
CREATE VIRTUAL TABLE IF NOT EXISTS episodes_fts
|
||||
USING fts5(user_message, ai_response, content=episodes, content_rowid=id);
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS episodes_fts_insert
|
||||
AFTER INSERT ON episodes BEGIN
|
||||
INSERT INTO episodes_fts(rowid, user_message, ai_response)
|
||||
VALUES (new.id, new.user_message, new.ai_response);
|
||||
END;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS episodes_fts_delete
|
||||
AFTER DELETE ON episodes BEGIN
|
||||
INSERT INTO episodes_fts(episodes_fts, rowid, user_message, ai_response)
|
||||
VALUES ('delete', old.id, old.user_message, old.ai_response);
|
||||
END;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS episodes_fts_update
|
||||
AFTER UPDATE ON episodes BEGIN
|
||||
INSERT INTO episodes_fts(episodes_fts, rowid, user_message, ai_response)
|
||||
VALUES ('delete', old.id, old.user_message, old.ai_response);
|
||||
INSERT INTO episodes_fts(rowid, user_message, ai_response)
|
||||
VALUES (new.id, new.user_message, new.ai_response);
|
||||
END;
|
||||
`;
|
||||
|
||||
module.exports = schema;
|
||||
Reference in New Issue
Block a user