diff --git a/setup/sqlite.sql b/setup/sqlite.sql index 83c0281..b685173 100644 --- a/setup/sqlite.sql +++ b/setup/sqlite.sql @@ -25,24 +25,13 @@ count integer CREATE TABLE category(id INTEGER PRIMARY KEY, name varchar(255)); CREATE TABLE categorymember(id INTEGER PRIMARY KEY, category REFERENCES category(id), page REFERENCES page (id)); CREATE INDEX revisionid ON revision (revisionid DESC); -CREATE INDEX pagename ON page (name) -; -CREATE INDEX token ON session (token) -; -CREATE TRIGGER search_ai AFTER INSERT ON revision BEGIN - DELETE FROM search WHERE page = new.page; - INSERT INTO search(rowid, content, page) VALUES (new.id, new.content, new.page); -END; -CREATE TRIGGER search_au AFTER UPDATE ON revision BEGIN - DELETE FROM search WHERE page = old.page; - INSERT INTO search(rowid, content, page) VALUES (new.id, new.content, new.page); -END; -CREATE VIRTUAL TABLE search USING fts5(content, page UNINDEXED, content=revision,content_rowid=id) -/* search(content,page) */; -CREATE TABLE IF NOT EXISTS 'search_data'(id INTEGER PRIMARY KEY, block BLOB); -CREATE TABLE IF NOT EXISTS 'search_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID; -CREATE TABLE IF NOT EXISTS 'search_docsize'(id INTEGER PRIMARY KEY, sz BLOB); -CREATE TABLE IF NOT EXISTS 'search_config'(k PRIMARY KEY, v) WITHOUT ROWID; +CREATE INDEX pagename ON page (name); +CREATE INDEX token ON session (token); +CREATE VIRTUAL TABLE search USING fts5(content, page UNINDEXED, content=revision,content_rowid=id); CREATE TRIGGER search_ad AFTER DELETE ON revision BEGIN INSERT INTO search(search, rowid, content, page) VALUES('delete', old.id, old.content, old.page); END; +CREATE TRIGGER search_ai AFTER INSERT ON revision BEGIN + INSERT INTO search(search, rowid, content, page) SELECT 'delete', id, content, page FROM revision WHERE page = new.page AND revisionid = new.revisionid - 1; + INSERT INTO search(rowid, content, page) VALUES (new.id, new.content, new.page); +END;