76 lines
3.2 KiB
Rust
76 lines
3.2 KiB
Rust
use tauri_plugin_sql::{Migration, MigrationKind};
|
|
|
|
pub struct YomitanSearch;
|
|
|
|
impl YomitanSearch {
|
|
pub fn migrations() -> Vec<Migration> {
|
|
vec![
|
|
Migration {
|
|
version: 1,
|
|
description: "create yomitan dict-version tables",
|
|
sql: "
|
|
CREATE TABLE dict (
|
|
id INTEGER PRIMARY KEY,
|
|
title TEXT NOT NULL,
|
|
revision TEXT NOT NULL,
|
|
author TEXT,
|
|
url TEXT,
|
|
description TEXT,
|
|
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
installed_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
bundle_name TEXT, -- custom
|
|
lang TEXT NOT NULL, -- custom
|
|
asset_count INTEGER, -- custom
|
|
source TEXT, -- custom
|
|
UNIQUE (title, revision)
|
|
);
|
|
",
|
|
kind: MigrationKind::Up,
|
|
},
|
|
Migration {
|
|
version: 1,
|
|
description: "create yomitan ja query tables",
|
|
sql: "
|
|
CREATE TABLE ja_search (
|
|
id INTEGER NOT NULL, -- yomitan.terms.id OR yomitan dups OR -user.terms.id
|
|
dict_id INTEGER NOT NULL REFERENCES dict(id) ON DELETE CASCADE,
|
|
term TEXT NOT NULL, -- normalized
|
|
term_seg TEXT, -- segmented and filtered for fillers
|
|
reading TEXT NOT NULL, -- normalized
|
|
frequency INTEGER,
|
|
PRIMARY KEY (id, dict_id)
|
|
);
|
|
|
|
CREATE INDEX ja_search_term ON ja_search (term);
|
|
CREATE INDEX ja_search_reading ON ja_search (reading);
|
|
CREATE INDEX ja_search_frequency ON ja_search (frequency DESC);
|
|
|
|
CREATE VIRTUAL TABLE IF NOT EXISTS ja_search_ft USING fts5 (
|
|
term_seg,
|
|
content='ja_search',
|
|
content_rowid='rowid',
|
|
tokenize=unicode61
|
|
);
|
|
|
|
CREATE TRIGGER t_ja_search_ft_after_insert
|
|
AFTER INSERT ON ja_search BEGIN
|
|
INSERT INTO ja_search_ft (rowid, term_seg) VALUES (NEW.rowid, NEW.term_seg);
|
|
END;
|
|
|
|
CREATE TRIGGER t_ja_search_ft_after_delete
|
|
AFTER DELETE ON ja_search BEGIN
|
|
INSERT INTO ja_search_ft (ja_search_ft, rowid, term_seg) VALUES ('delete', OLD.rowid, OLD.term_seg);
|
|
END;
|
|
|
|
CREATE TRIGGER t_ja_search_ft_after_update
|
|
AFTER UPDATE ON ja_search BEGIN
|
|
INSERT INTO ja_search_ft (ja_search_ft, rowid, term_seg) VALUES ('delete', OLD.rowid, OLD.term_seg);
|
|
INSERT INTO ja_search_ft (rowid, term_seg) VALUES (NEW.rowid, NEW.term_seg);
|
|
END;
|
|
",
|
|
kind: MigrationKind::Up
|
|
}
|
|
]
|
|
}
|
|
}
|