Skip to content

Commit c5afaf5

Browse files
committed
bang history delete on cascade
1 parent ef8d3c3 commit c5afaf5

File tree

8 files changed

+2436
-5
lines changed

8 files changed

+2436
-5
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"_meta":{"description":"This file contains a serialized version of schema entities for drift.","version":"1.2.0"},"options":{"store_date_time_values_as_text":false},"entities":[{"id":0,"references":[],"type":"table","data":{"name":"bang","was_declared_in_moor":true,"columns":[{"name":"trigger","getter_name":"trigger","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"group","getter_name":"group","moor_type":"int","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter<BangGroup>(BangGroup.values)","dart_type_name":"BangGroup"}},{"name":"website_name","getter_name":"websiteName","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"domain","getter_name":"domain","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"url_template","getter_name":"urlTemplate","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"category","getter_name":"category","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"sub_category","getter_name":"subCategory","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"format","getter_name":"format","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const BangFormatConverter()","dart_type_name":"Set<BangFormat>?"}},{"name":"additional_triggers","getter_name":"additionalTriggers","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const TriggerListConverter()","dart_type_name":"Set<String>?"}},{"name":"searxng_api","getter_name":"searxngApi","moor_type":"bool","nullable":false,"customConstraints":"NOT NULL DEFAULT FALSE","default_dart":"const CustomExpression('FALSE')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":["PRIMARY KEY(\"trigger\", \"group\")"],"explicit_pk":["trigger","group"]}},{"id":1,"references":[0],"type":"table","data":{"name":"bang_triggers","was_declared_in_moor":true,"columns":[{"name":"trigger","getter_name":"trigger","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"group","getter_name":"group","moor_type":"int","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter<BangGroup>(BangGroup.values)","dart_type_name":"BangGroup"}},{"name":"additional_trigger","getter_name":"additionalTrigger","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":["PRIMARY KEY(\"trigger\", \"group\", additional_trigger)","FOREIGN KEY(\"trigger\", \"group\")REFERENCES bang(\"trigger\", \"group\")ON DELETE CASCADE"],"explicit_pk":["trigger","group","additional_trigger"]}},{"id":2,"references":[1],"type":"index","data":{"on":1,"name":"idx_bang_triggers_lookup","sql":"CREATE INDEX idx_bang_triggers_lookup ON bang_triggers (additional_trigger, \"group\");","unique":false,"columns":[]}},{"id":3,"references":[0,1],"type":"trigger","data":{"on":0,"references_in_body":[0,1],"name":"bang_triggers_after_insert","sql":"CREATE TRIGGER bang_triggers_after_insert AFTER INSERT ON bang \nWHEN new.additional_triggers IS NOT NULL\nBEGIN\n INSERT INTO bang_triggers(\"trigger\", \"group\", additional_trigger)\n SELECT \n new.\"trigger\",\n new.\"group\",\n json_each.value\n FROM json_each(new.additional_triggers);\nEND;"}},{"id":4,"references":[0,1],"type":"trigger","data":{"on":0,"references_in_body":[0,1],"name":"bang_triggers_after_update","sql":"CREATE TRIGGER bang_triggers_after_update AFTER UPDATE ON bang BEGIN\n -- Delete old additional triggers\n DELETE FROM bang_triggers \n WHERE \"trigger\" = old.\"trigger\" AND \"group\" = old.\"group\";\n\n -- Insert new additional triggers if they exist\n INSERT INTO bang_triggers(\"trigger\", \"group\", additional_trigger)\n SELECT \n new.\"trigger\",\n new.\"group\",\n json_each.value\n FROM json_each(new.additional_triggers)\n WHERE new.additional_triggers IS NOT NULL;\nEND;"}},{"id":5,"references":[],"type":"table","data":{"name":"bang_sync","was_declared_in_moor":true,"columns":[{"name":"group","getter_name":"group","moor_type":"int","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"],"type_converter":{"dart_expr":"const EnumIndexConverter<BangGroup>(BangGroup.values)","dart_type_name":"BangGroup"}},{"name":"last_sync","getter_name":"lastSync","moor_type":"dateTime","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":6,"references":[0],"type":"table","data":{"name":"bang_frequency","was_declared_in_moor":true,"columns":[{"name":"trigger","getter_name":"trigger","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"group","getter_name":"group","moor_type":"int","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter<BangGroup>(BangGroup.values)","dart_type_name":"BangGroup"}},{"name":"frequency","getter_name":"frequency","moor_type":"int","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_used","getter_name":"lastUsed","moor_type":"dateTime","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":["PRIMARY KEY(\"trigger\", \"group\")","FOREIGN KEY(\"trigger\", \"group\")REFERENCES bang(\"trigger\", \"group\")ON DELETE CASCADE"],"explicit_pk":["trigger","group"]}},{"id":7,"references":[0],"type":"table","data":{"name":"bang_history","was_declared_in_moor":true,"columns":[{"name":"search_query","getter_name":"searchQuery","moor_type":"string","nullable":false,"customConstraints":"UNIQUE NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["unique"]},{"name":"trigger","getter_name":"trigger","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"group","getter_name":"group","moor_type":"int","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter<BangGroup>(BangGroup.values)","dart_type_name":"BangGroup"}},{"name":"search_date","getter_name":"searchDate","moor_type":"dateTime","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":["FOREIGN KEY(\"trigger\", \"group\")REFERENCES bang(\"trigger\", \"group\")ON DELETE CASCADE"]}},{"id":8,"references":[0],"type":"table","data":{"name":"bang_fts","was_declared_in_moor":true,"columns":[{"name":"trigger","getter_name":"trigger","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"website_name","getter_name":"websiteName","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":true,"create_virtual_stmt":"CREATE VIRTUAL TABLE \"bang_fts\" USING fts5(trigger, website_name, content=bang, prefix='2 3')","without_rowid":false,"constraints":[]}},{"id":9,"references":[1],"type":"table","data":{"name":"bang_triggers_fts","was_declared_in_moor":true,"columns":[{"name":"additional_trigger","getter_name":"additionalTrigger","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":true,"create_virtual_stmt":"CREATE VIRTUAL TABLE \"bang_triggers_fts\" USING fts5(additional_trigger, content=bang_triggers, prefix='2 3')","without_rowid":false,"constraints":[]}},{"id":10,"references":[0,6],"type":"view","data":{"name":"bang_data_view","sql":"CREATE VIEW bang_data_view AS SELECT b.*, bf.frequency, bf.last_used FROM bang AS b LEFT JOIN bang_frequency AS bf ON b.\"trigger\" = bf.\"trigger\" AND b.\"group\" = bf.\"group\";","dart_info_name":"BangDataView","columns":[{"name":"trigger","getter_name":"trigger","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"group","getter_name":"group","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter<BangGroup>(BangGroup.values)","dart_type_name":"BangGroup"}},{"name":"website_name","getter_name":"websiteName","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"domain","getter_name":"domain","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"url_template","getter_name":"urlTemplate","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"category","getter_name":"category","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"sub_category","getter_name":"subCategory","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"format","getter_name":"format","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const BangFormatConverter()","dart_type_name":"Set<BangFormat>?"}},{"name":"additional_triggers","getter_name":"additionalTriggers","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const TriggerListConverter()","dart_type_name":"Set<String>?"}},{"name":"searxng_api","getter_name":"searxngApi","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"searxng_api\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"searxng_api\" IN (0, 1))"},"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"frequency","getter_name":"frequency","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_used","getter_name":"lastUsed","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}]}},{"id":11,"references":[0,8],"type":"trigger","data":{"on":0,"references_in_body":[0,8],"name":"bang_after_insert","sql":"CREATE TRIGGER bang_after_insert AFTER INSERT ON bang BEGIN\n INSERT INTO \n bang_fts(rowid, \"trigger\", website_name) \n VALUES (new.rowid, new.\"trigger\", new.website_name);\nEND;"}},{"id":12,"references":[0,8],"type":"trigger","data":{"on":0,"references_in_body":[0,8],"name":"bang_after_delete","sql":"CREATE TRIGGER bang_after_delete AFTER DELETE ON bang BEGIN\n INSERT INTO \n bang_fts(bang_fts, rowid, \"trigger\", website_name) \n VALUES('delete', old.rowid, old.\"trigger\", old.website_name);\nEND;"}},{"id":13,"references":[0,8],"type":"trigger","data":{"on":0,"references_in_body":[0,8],"name":"bang_after_update","sql":"CREATE TRIGGER bang_after_update AFTER UPDATE ON bang BEGIN\n INSERT INTO \n bang_fts(bang_fts, rowid, \"trigger\", website_name) \n VALUES('delete', old.rowid, old.\"trigger\", old.website_name);\n INSERT INTO \n bang_fts(rowid, \"trigger\", website_name) \n VALUES (new.rowid, new.\"trigger\", new.website_name);\nEND;"}},{"id":14,"references":[1,9],"type":"trigger","data":{"on":1,"references_in_body":[1,9],"name":"bang_triggers_after_insert_fts","sql":"CREATE TRIGGER bang_triggers_after_insert_fts AFTER INSERT ON bang_triggers BEGIN\n INSERT INTO \n bang_triggers_fts(rowid, additional_trigger) \n VALUES (new.rowid, new.additional_trigger);\nEND;"}},{"id":15,"references":[1,9],"type":"trigger","data":{"on":1,"references_in_body":[1,9],"name":"bang_triggers_after_delete_fts","sql":"CREATE TRIGGER bang_triggers_after_delete_fts AFTER DELETE ON bang_triggers BEGIN\n INSERT INTO \n bang_triggers_fts(bang_triggers_fts, rowid, additional_trigger) \n VALUES('delete', old.rowid, old.additional_trigger);\nEND;"}},{"id":16,"references":[1,9],"type":"trigger","data":{"on":1,"references_in_body":[1,9],"name":"bang_triggers_after_update_fts","sql":"CREATE TRIGGER bang_triggers_after_update_fts AFTER UPDATE ON bang_triggers BEGIN\n INSERT INTO \n bang_triggers_fts(bang_triggers_fts, rowid, additional_trigger) \n VALUES('delete', old.rowid, old.additional_trigger);\n INSERT INTO \n bang_triggers_fts(rowid, additional_trigger) \n VALUES (new.rowid, new.additional_trigger);\nEND;"}}]}

app/lib/features/bangs/data/database/database.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import 'package:weblibre/features/search/domain/fts_tokenizer.dart';
3030
@DriftDatabase(include: {'definitions.drift'}, daos: [BangDao, SyncDao])
3131
class BangDatabase extends $BangDatabase with PrefixQueryBuilderMixin {
3232
@override
33-
final int schemaVersion = 3;
33+
final int schemaVersion = 4;
3434

3535
@override
3636
final int ftsTokenLimit = 6;
@@ -91,5 +91,8 @@ class BangDatabase extends $BangDatabase with PrefixQueryBuilderMixin {
9191
final bangAtV3 = schema.bang;
9292
await m.addColumn(bangAtV3, bangAtV3.searxngApi);
9393
},
94+
from3To4: (m, schema) async {
95+
await m.alterTable(TableMigration(schema.bangHistory));
96+
},
9497
);
9598
}

app/lib/features/bangs/data/database/database.drift.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ abstract class $BangDatabase extends i0.GeneratedDatabase {
8282
),
8383
result: [i0.TableUpdate('bang_frequency', kind: i0.UpdateKind.delete)],
8484
),
85+
i0.WritePropagation(
86+
on: i0.TableUpdateQuery.onTableName(
87+
'bang',
88+
limitUpdateKind: i0.UpdateKind.delete,
89+
),
90+
result: [i0.TableUpdate('bang_history', kind: i0.UpdateKind.delete)],
91+
),
8592
i0.WritePropagation(
8693
on: i0.TableUpdateQuery.onTableName(
8794
'bang',

0 commit comments

Comments
 (0)