mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
48 lines
2.2 KiB
SQL
48 lines
2.2 KiB
SQL
CREATE TABLE fts_db.dirtied_formats ( id INTEGER PRIMARY KEY,
|
|
book INTEGER NOT NULL,
|
|
format TEXT NOT NULL COLLATE NOCASE,
|
|
in_progress INTEGER NOT NULL DEFAULT FALSE,
|
|
UNIQUE(book, format)
|
|
);
|
|
|
|
CREATE TABLE fts_db.books_text ( id INTEGER PRIMARY KEY,
|
|
book INTEGER NOT NULL,
|
|
timestamp REAL NOT NULL,
|
|
format TEXT NOT NULL COLLATE NOCASE,
|
|
format_hash TEXT NOT NULL COLLATE NOCASE,
|
|
format_size INTEGER NOT NULL DEFAULT 0,
|
|
searchable_text TEXT NOT NULL DEFAULT "",
|
|
text_size INTEGER NOT NULL DEFAULT 0,
|
|
text_hash TEXT NOT NULL COLLATE NOCASE DEFAULT "",
|
|
err_msg TEXT DEFAULT "",
|
|
UNIQUE(book, format)
|
|
);
|
|
|
|
|
|
CREATE VIRTUAL TABLE fts_db.books_fts USING fts5(searchable_text, content = 'books_text', content_rowid = 'id', tokenize = 'calibre remove_diacritics 2');
|
|
CREATE VIRTUAL TABLE fts_db.books_fts_stemmed USING fts5(searchable_text, content = 'books_text', content_rowid = 'id', tokenize = 'porter calibre remove_diacritics 2');
|
|
|
|
CREATE TRIGGER fts_db.books_fts_insert_trg AFTER INSERT ON fts_db.books_text
|
|
BEGIN
|
|
INSERT INTO books_fts(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
|
|
INSERT INTO books_fts_stemmed(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
|
|
DELETE FROM dirtied_formats WHERE book=NEW.book AND format=NEW.format;
|
|
END;
|
|
|
|
CREATE TRIGGER fts_db.books_fts_delete_trg AFTER DELETE ON fts_db.books_text
|
|
BEGIN
|
|
INSERT INTO books_fts(books_fts, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
|
|
INSERT INTO books_fts_stemmed(books_fts_stemmed, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
|
|
END;
|
|
|
|
CREATE TRIGGER fts_db.books_fts_update_trg AFTER UPDATE ON fts_db.books_text
|
|
BEGIN
|
|
INSERT INTO books_fts(books_fts, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
|
|
INSERT INTO books_fts(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
|
|
INSERT INTO books_fts_stemmed(books_fts_stemmed, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
|
|
INSERT INTO books_fts_stemmed(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
|
|
DELETE FROM dirtied_formats WHERE book=NEW.book AND format=NEW.format;
|
|
END;
|
|
|
|
PRAGMA fts_db.user_version=1;
|