fix fts table defs
This commit is contained in:
parent
24c67bc529
commit
efec2e670f
2 changed files with 22 additions and 9 deletions
|
@ -1,5 +1,16 @@
|
||||||
create virtual table if not exists star_search using fts5(name, id);
|
create virtual table if not exists star_search using fts5 (name, id UNINDEXED, tokenize = 'trigram', content = 'stars', content_rowid=rowid);
|
||||||
insert into star_search(name, id) select name, id from stars;
|
create trigger if not exists stars_update_search after insert on stars begin
|
||||||
|
insert into star_search (rowid, name, id) values (new.rowid, new.name, new.id);
|
||||||
|
end;
|
||||||
|
create trigger if not exists stars_delete_search after delete on stars begin
|
||||||
|
insert into star_search (star_search, rowid, name, id) values ('delete', old.rowid, old.name, old.id);
|
||||||
|
end;
|
||||||
|
|
||||||
|
create virtual table if not exists watch_search using fts5 (title, id UNINDEXED, tokenize = 'trigram', content = 'watches', content_rowid=rowid);
|
||||||
|
create trigger if not exists watches_update_search after insert on watches begin
|
||||||
|
insert into watch_search (rowid, title, id) values (new.rowid, new.title, new.id);
|
||||||
|
end;
|
||||||
|
create trigger if not exists watches_delete_search after delete on watches begin
|
||||||
|
insert into watch_search (watch_search, rowid, title, id) values ('delete', old.rowid, old.title, old.id);
|
||||||
|
end;
|
||||||
|
|
||||||
create virtual table if not exists watch_search using fts5(title, id);
|
|
||||||
insert into watch_search(title, id) select title, id from watches;
|
|
||||||
|
|
|
@ -250,11 +250,13 @@ pub async fn get_search_watch(
|
||||||
let query = if search_query == SearchQuery::default() {
|
let query = if search_query == SearchQuery::default() {
|
||||||
query_as(DEFAULT_WATCHES_QUERY)
|
query_as(DEFAULT_WATCHES_QUERY)
|
||||||
} else if let Some(title) = search_query.title {
|
} else if let Some(title) = search_query.title {
|
||||||
let q = format!("%{title}%");
|
query_as(
|
||||||
query_as("select * from watches where title like ?").bind(q)
|
"select * from watches where id in (select id from watch_search where title match ?)",
|
||||||
} else if let Some(search) = search_query.search {
|
)
|
||||||
let q = format!("%{search}");
|
.bind(title)
|
||||||
query_as("select * from watches where title like ?").bind(q)
|
} else if let Some(ref search) = search_query.search {
|
||||||
|
query_as("select * from watches where id in (select id from watch_search where title match ?) outer join (select * from stars where id in (select id from star_search where name match ?)) s")
|
||||||
|
.bind(search).bind(search)
|
||||||
} else {
|
} else {
|
||||||
query_as(DEFAULT_WATCHES_QUERY)
|
query_as(DEFAULT_WATCHES_QUERY)
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue