mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
fix(seahorse): drop/recreate FTS5 triggers so existing DBs get corrected bodies
`CREATE TRIGGER IF NOT EXISTS` does not replace an existing trigger body. On databases created with the old (buggy) DELETE-FROM-FTS syntax, the bad trigger body persisted after code updates. Now we explicitly DROP each trigger before CREATE, so any existing DB gets the corrected body on next startup — no manual DB deletion required.
This commit is contained in:
+15
-6
@@ -118,26 +118,35 @@ func runSchema(db *sql.DB) error {
|
||||
`CREATE INDEX IF NOT EXISTS idx_summary_messages_message ON summary_messages(message_id)`,
|
||||
`CREATE INDEX IF NOT EXISTS idx_context_items_conv ON context_items(conversation_id, ordinal)`,
|
||||
|
||||
// Drop old triggers before creating new ones so existing DBs get updated bodies.
|
||||
// (CREATE TRIGGER IF NOT EXISTS does NOT replace an existing trigger body.)
|
||||
`DROP TRIGGER IF EXISTS summaries_ai`,
|
||||
`DROP TRIGGER IF EXISTS summaries_ad`,
|
||||
`DROP TRIGGER IF EXISTS summaries_au`,
|
||||
`DROP TRIGGER IF EXISTS messages_ai`,
|
||||
`DROP TRIGGER IF EXISTS messages_ad`,
|
||||
`DROP TRIGGER IF EXISTS messages_au`,
|
||||
|
||||
// FTS5 triggers to keep summaries_fts in sync with summaries table
|
||||
`CREATE TRIGGER IF NOT EXISTS summaries_ai AFTER INSERT ON summaries BEGIN
|
||||
`CREATE TRIGGER summaries_ai AFTER INSERT ON summaries BEGIN
|
||||
INSERT INTO summaries_fts (summary_id, content) VALUES (new.summary_id, new.content);
|
||||
END`,
|
||||
`CREATE TRIGGER IF NOT EXISTS summaries_ad AFTER DELETE ON summaries BEGIN
|
||||
`CREATE TRIGGER summaries_ad AFTER DELETE ON summaries BEGIN
|
||||
DELETE FROM summaries_fts WHERE summary_id = old.summary_id;
|
||||
END`,
|
||||
`CREATE TRIGGER IF NOT EXISTS summaries_au AFTER UPDATE ON summaries BEGIN
|
||||
`CREATE TRIGGER summaries_au AFTER UPDATE ON summaries BEGIN
|
||||
DELETE FROM summaries_fts WHERE summary_id = old.summary_id;
|
||||
INSERT INTO summaries_fts (summary_id, content) VALUES (new.summary_id, new.content);
|
||||
END`,
|
||||
|
||||
// FTS5 triggers to keep messages_fts in sync with messages table
|
||||
`CREATE TRIGGER IF NOT EXISTS messages_ai AFTER INSERT ON messages BEGIN
|
||||
`CREATE TRIGGER messages_ai AFTER INSERT ON messages BEGIN
|
||||
INSERT INTO messages_fts (message_id, content) VALUES (new.message_id, new.content);
|
||||
END`,
|
||||
`CREATE TRIGGER IF NOT EXISTS messages_ad AFTER DELETE ON messages BEGIN
|
||||
`CREATE TRIGGER messages_ad AFTER DELETE ON messages BEGIN
|
||||
DELETE FROM messages_fts WHERE message_id = old.message_id;
|
||||
END`,
|
||||
`CREATE TRIGGER IF NOT EXISTS messages_au AFTER UPDATE ON messages BEGIN
|
||||
`CREATE TRIGGER messages_au AFTER UPDATE ON messages BEGIN
|
||||
DELETE FROM messages_fts WHERE message_id = old.message_id;
|
||||
INSERT INTO messages_fts (message_id, content) VALUES (new.message_id, new.content);
|
||||
END`,
|
||||
|
||||
Reference in New Issue
Block a user