intermediate

This commit is contained in:
Fabian Freund
2025-01-07 00:06:31 +01:00
parent ea0880b97a
commit 4a2191b01d
84 changed files with 2655 additions and 1383 deletions
@@ -1,6 +1,7 @@
import 'package:lensai/features/bangs/data/database/drift/converters/bang_format.dart';
import 'package:lensai/features/bangs/data/models/bang_data.dart';
import 'package:lensai/features/bangs/data/models/bang.dart';
import 'package:lensai/features/bangs/data/models/search_history_entry.dart';
CREATE TABLE bang (
"trigger" TEXT PRIMARY KEY NOT NULL,
@@ -24,10 +25,10 @@ CREATE TABLE bang_frequency (
last_used DATETIME NOT NULL
);
CREATE TABLE bang_icon (
"trigger" TEXT PRIMARY KEY NOT NULL REFERENCES bang ("trigger") ON DELETE CASCADE,
icon_data BLOB NOT NULL,
fetch_date DATETIME NOT NULL
CREATE TABLE bang_history (
search_query TEXT UNIQUE NOT NULL,
"trigger" TEXT NOT NULL REFERENCES bang ("trigger"),
search_date DATETIME NOT NULL
);
CREATE VIRTUAL TABLE bang_fts
@@ -42,14 +43,11 @@ CREATE VIEW bang_data_view WITH BangData AS
SELECT
b.*,
bf.frequency,
bf.last_used,
bi.icon_data
bf.last_used
FROM
bang b
LEFT JOIN
bang_frequency bf ON b."trigger" = bf."trigger"
LEFT JOIN
bang_icon bi ON b."trigger" = bi."trigger";
bang_frequency bf ON b."trigger" = bf."trigger";
-- Triggers to keep the FTS index up to date.
CREATE TRIGGER bang_after_insert AFTER INSERT ON bang BEGIN
@@ -78,16 +76,13 @@ bangQuery WITH BangData:
SELECT
b.*,
bf.frequency,
bf.last_used,
bi.icon_data
bf.last_used
FROM
bang_fts(:query) fts
INNER JOIN
bang b ON b.rowid = fts.rowid
LEFT JOIN
bang_frequency bf ON b."trigger" = bf."trigger"
LEFT JOIN
bang_icon bi ON b."trigger" = bi."trigger"
ORDER BY
RANK,
bf.frequency NULLS LAST;
@@ -113,4 +108,19 @@ categoriesJson:
c.category,
json(c.sub_categories)
) AS categories_json
FROM categories c;
FROM categories c;
searchHistoryEntries WITH SearchHistoryEntry:
SELECT *
FROM bang_history
ORDER BY search_date DESC
LIMIT :limit;
evictHistoryEntries:
DELETE FROM bang_history
WHERE rowid IN (
SELECT rowid
FROM bang_history
ORDER BY search_date DESC
LIMIT -1 OFFSET :limit
);