From d751e9b9a1f3c3de8892002a9aa9a8ae89cef3fd Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Sun, 28 Dec 2025 15:02:50 +0100 Subject: [PATCH] regenerate last migrations with updated drift_dev --- app/drift_schemas/bangs/drift_schema_v4.json | 893 +++++++++++++++++- app/drift_schemas/tabs/drift_schema_v2.json | 418 +++++++- app/drift_schemas/user/drift_schema_v2.json | 233 ++++- .../web_feed/drift_schema_v1.json | 739 ++++++++++++++- .../bangs/data/database/database.steps.dart | 205 +++- .../user/data/database/database.steps.dart | 50 +- app/test/drift/bangs/generated/schema_v4.dart | 294 +++--- app/test/drift/user/generated/schema_v2.dart | 89 +- 8 files changed, 2676 insertions(+), 245 deletions(-) diff --git a/app/drift_schemas/bangs/drift_schema_v4.json b/app/drift_schemas/bangs/drift_schema_v4.json index 0e6b4096..f53f7c57 100644 --- a/app/drift_schemas/bangs/drift_schema_v4.json +++ b/app/drift_schemas/bangs/drift_schema_v4.json @@ -1 +1,892 @@ -{"_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.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?"}},{"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?"}},{"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.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.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.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.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.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?"}},{"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?"}},{"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;"}}]} \ No newline at end of file +{ + "_meta": { + "description": "This file contains a serialized version of schema entities for drift.", + "version": "1.3.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.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?" + } + }, + { + "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?" + } + }, + { + "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.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.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.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.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.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?" + } + }, + { + "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?" + } + }, + { + "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;" + } + } + ], + "fixed_sql": [ + { + "name": "bang", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"bang\" (\"trigger\" TEXT NOT NULL, \"group\" INTEGER NOT NULL, \"website_name\" TEXT NOT NULL, \"domain\" TEXT NOT NULL, \"url_template\" TEXT NOT NULL, \"category\" TEXT, \"sub_category\" TEXT, \"format\" TEXT, \"additional_triggers\" TEXT, \"searxng_api\" INTEGER NOT NULL DEFAULT FALSE, PRIMARY KEY(\"trigger\", \"group\"));" + } + ] + }, + { + "name": "bang_triggers", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"bang_triggers\" (\"trigger\" TEXT NOT NULL, \"group\" INTEGER NOT NULL, \"additional_trigger\" TEXT NOT NULL, PRIMARY KEY(\"trigger\", \"group\", additional_trigger), FOREIGN KEY(\"trigger\", \"group\")REFERENCES bang(\"trigger\", \"group\")ON DELETE CASCADE);" + } + ] + }, + { + "name": "idx_bang_triggers_lookup", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE INDEX idx_bang_triggers_lookup ON bang_triggers (additional_trigger, \"group\")" + } + ] + }, + { + "name": "bang_triggers_after_insert", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_triggers_after_insert AFTER INSERT ON bang WHEN new.additional_triggers IS NOT NULL BEGIN INSERT INTO bang_triggers (\"trigger\", \"group\", additional_trigger) SELECT new.\"trigger\", new.\"group\", json_each.value FROM json_each(new.additional_triggers);END" + } + ] + }, + { + "name": "bang_triggers_after_update", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_triggers_after_update AFTER UPDATE ON bang BEGIN DELETE FROM bang_triggers WHERE \"trigger\" = old.\"trigger\" AND \"group\" = old.\"group\";INSERT INTO bang_triggers (\"trigger\", \"group\", additional_trigger) SELECT new.\"trigger\", new.\"group\", json_each.value FROM json_each(new.additional_triggers)WHERE new.additional_triggers IS NOT NULL;END" + } + ] + }, + { + "name": "bang_sync", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"bang_sync\" (\"group\" INTEGER PRIMARY KEY NOT NULL, \"last_sync\" INTEGER NOT NULL);" + } + ] + }, + { + "name": "bang_frequency", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"bang_frequency\" (\"trigger\" TEXT NOT NULL, \"group\" INTEGER NOT NULL, \"frequency\" INTEGER NOT NULL, \"last_used\" INTEGER NOT NULL, PRIMARY KEY(\"trigger\", \"group\"), FOREIGN KEY(\"trigger\", \"group\")REFERENCES bang(\"trigger\", \"group\")ON DELETE CASCADE);" + } + ] + }, + { + "name": "bang_history", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"bang_history\" (\"search_query\" TEXT UNIQUE NOT NULL, \"trigger\" TEXT NOT NULL, \"group\" INTEGER NOT NULL, \"search_date\" INTEGER NOT NULL, FOREIGN KEY(\"trigger\", \"group\")REFERENCES bang(\"trigger\", \"group\")ON DELETE CASCADE);" + } + ] + }, + { + "name": "bang_fts", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE VIRTUAL TABLE IF NOT EXISTS \"bang_fts\" USING fts5(trigger, website_name, content=bang, prefix='2 3');" + } + ] + }, + { + "name": "bang_triggers_fts", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE VIRTUAL TABLE IF NOT EXISTS \"bang_triggers_fts\" USING fts5(additional_trigger, content=bang_triggers, prefix='2 3');" + } + ] + }, + { + "name": "bang_data_view", + "sql": [ + { + "dialect": "sqlite", + "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\"" + } + ] + }, + { + "name": "bang_after_insert", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_after_insert AFTER INSERT ON bang BEGIN INSERT INTO bang_fts (\"rowid\", \"trigger\", website_name) VALUES (new.\"rowid\", new.\"trigger\", new.website_name);END" + } + ] + }, + { + "name": "bang_after_delete", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_after_delete AFTER DELETE ON bang BEGIN INSERT INTO bang_fts (bang_fts, \"rowid\", \"trigger\", website_name) VALUES ('delete', old.\"rowid\", old.\"trigger\", old.website_name);END" + } + ] + }, + { + "name": "bang_after_update", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_after_update AFTER UPDATE ON bang BEGIN INSERT INTO bang_fts (bang_fts, \"rowid\", \"trigger\", website_name) VALUES ('delete', old.\"rowid\", old.\"trigger\", old.website_name);INSERT INTO bang_fts (\"rowid\", \"trigger\", website_name) VALUES (new.\"rowid\", new.\"trigger\", new.website_name);END" + } + ] + }, + { + "name": "bang_triggers_after_insert_fts", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_triggers_after_insert_fts AFTER INSERT ON bang_triggers BEGIN INSERT INTO bang_triggers_fts (\"rowid\", additional_trigger) VALUES (new.\"rowid\", new.additional_trigger);END" + } + ] + }, + { + "name": "bang_triggers_after_delete_fts", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_triggers_after_delete_fts AFTER DELETE ON bang_triggers BEGIN INSERT INTO bang_triggers_fts (bang_triggers_fts, \"rowid\", additional_trigger) VALUES ('delete', old.\"rowid\", old.additional_trigger);END" + } + ] + }, + { + "name": "bang_triggers_after_update_fts", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER bang_triggers_after_update_fts AFTER UPDATE ON bang_triggers BEGIN INSERT INTO bang_triggers_fts (bang_triggers_fts, \"rowid\", additional_trigger) VALUES ('delete', old.\"rowid\", old.additional_trigger);INSERT INTO bang_triggers_fts (\"rowid\", additional_trigger) VALUES (new.\"rowid\", new.additional_trigger);END" + } + ] + } + ] +} \ No newline at end of file diff --git a/app/drift_schemas/tabs/drift_schema_v2.json b/app/drift_schemas/tabs/drift_schema_v2.json index 71bc9a1f..f971d55e 100644 --- a/app/drift_schemas/tabs/drift_schema_v2.json +++ b/app/drift_schemas/tabs/drift_schema_v2.json @@ -1 +1,417 @@ -{"_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":"container","was_declared_in_moor":true,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"]},{"name":"name","getter_name":"name","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"color","getter_name":"color","moor_type":"int","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const ColorConverter()","dart_type_name":"Color"}},{"name":"metadata","getter_name":"metadata","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const ContainerMetadataConverter()","dart_type_name":"ContainerMetadata"}}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":1,"references":[0],"type":"table","data":{"name":"tab","was_declared_in_moor":true,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"]},{"name":"parent_id","getter_name":"parentId","moor_type":"string","nullable":true,"customConstraints":"REFERENCES tab(id)ON DELETE SET NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"container_id","getter_name":"containerId","moor_type":"string","nullable":true,"customConstraints":"REFERENCES container(id)ON DELETE CASCADE","default_dart":null,"default_client_dart":null,"dsl_features":[{"foreign_key":{"to":{"table":"container","column":"id"},"initially_deferred":false,"on_update":null,"on_delete":"cascade"}}]},{"name":"order_key","getter_name":"orderKey","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"url","getter_name":"url","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const UriConverterNullable()","dart_type_name":"Uri?"}},{"name":"title","getter_name":"title","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"is_probably_readerable","getter_name":"isProbablyReaderable","moor_type":"bool","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"extracted_content_markdown","getter_name":"extractedContentMarkdown","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"extracted_content_plain","getter_name":"extractedContentPlain","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"full_content_markdown","getter_name":"fullContentMarkdown","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"full_content_plain","getter_name":"fullContentPlain","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"timestamp","getter_name":"timestamp","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":2,"references":[1],"type":"table","data":{"name":"tab_fts","was_declared_in_moor":true,"columns":[{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"url","getter_name":"url","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"extracted_content_plain","getter_name":"extractedContentPlain","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"full_content_plain","getter_name":"fullContentPlain","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":true,"create_virtual_stmt":"CREATE VIRTUAL TABLE \"tab_fts\" USING fts5(title, url, extracted_content_plain, full_content_plain, content=tab, tokenize=\"trigram\")","without_rowid":false,"constraints":[]}},{"id":3,"references":[1],"type":"trigger","data":{"on":1,"references_in_body":[1],"name":"tab_maintain_parent_chain_on_delete","sql":"CREATE TRIGGER tab_maintain_parent_chain_on_delete BEFORE DELETE ON tab BEGIN\n -- Update all children of the deleted row to point to its parent\n UPDATE tab \n SET parent_id = OLD.parent_id \n WHERE parent_id = OLD.id;\nEND;"}},{"id":4,"references":[1,2],"type":"trigger","data":{"on":1,"references_in_body":[1,2],"name":"tab_after_insert","sql":"CREATE TRIGGER tab_after_insert AFTER INSERT ON tab BEGIN\n INSERT INTO \n tab_fts(rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES (new.rowid, new.title, new.url, new.extracted_content_plain, new.full_content_plain);\nEND;"}},{"id":5,"references":[1,2],"type":"trigger","data":{"on":1,"references_in_body":[1,2],"name":"tab_after_delete","sql":"CREATE TRIGGER tab_after_delete AFTER DELETE ON tab BEGIN\n INSERT INTO \n tab_fts(tab_fts, rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES('delete', old.rowid, old.title, old.url, old.extracted_content_plain, old.full_content_plain);\nEND;"}},{"id":6,"references":[1,2],"type":"trigger","data":{"on":1,"references_in_body":[1,2],"name":"tab_after_update","sql":"CREATE TRIGGER tab_after_update AFTER UPDATE ON tab BEGIN\n INSERT INTO \n tab_fts(tab_fts, rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES('delete', old.rowid, old.title, old.url, old.extracted_content_plain, old.full_content_plain);\n INSERT INTO \n tab_fts(rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES (new.rowid, new.title, new.url, new.extracted_content_plain, new.full_content_plain);\nEND;"}}]} \ No newline at end of file +{ + "_meta": { + "description": "This file contains a serialized version of schema entities for drift.", + "version": "1.3.0" + }, + "options": { + "store_date_time_values_as_text": false + }, + "entities": [ + { + "id": 0, + "references": [], + "type": "table", + "data": { + "name": "container", + "was_declared_in_moor": true, + "columns": [ + { + "name": "id", + "getter_name": "id", + "moor_type": "string", + "nullable": false, + "customConstraints": "PRIMARY KEY NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + "primary-key" + ] + }, + { + "name": "name", + "getter_name": "name", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "color", + "getter_name": "color", + "moor_type": "int", + "nullable": false, + "customConstraints": "NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const ColorConverter()", + "dart_type_name": "Color" + } + }, + { + "name": "metadata", + "getter_name": "metadata", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const ContainerMetadataConverter()", + "dart_type_name": "ContainerMetadata" + } + } + ], + "is_virtual": false, + "without_rowid": false, + "constraints": [] + } + }, + { + "id": 1, + "references": [ + 0 + ], + "type": "table", + "data": { + "name": "tab", + "was_declared_in_moor": true, + "columns": [ + { + "name": "id", + "getter_name": "id", + "moor_type": "string", + "nullable": false, + "customConstraints": "PRIMARY KEY NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + "primary-key" + ] + }, + { + "name": "parent_id", + "getter_name": "parentId", + "moor_type": "string", + "nullable": true, + "customConstraints": "REFERENCES tab(id)ON DELETE SET NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "container_id", + "getter_name": "containerId", + "moor_type": "string", + "nullable": true, + "customConstraints": "REFERENCES container(id)ON DELETE CASCADE", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + { + "foreign_key": { + "to": { + "table": "container", + "column": "id" + }, + "initially_deferred": false, + "on_update": null, + "on_delete": "cascade" + } + } + ] + }, + { + "name": "order_key", + "getter_name": "orderKey", + "moor_type": "string", + "nullable": false, + "customConstraints": "NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "url", + "getter_name": "url", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const UriConverterNullable()", + "dart_type_name": "Uri?" + } + }, + { + "name": "title", + "getter_name": "title", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "is_probably_readerable", + "getter_name": "isProbablyReaderable", + "moor_type": "bool", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "extracted_content_markdown", + "getter_name": "extractedContentMarkdown", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "extracted_content_plain", + "getter_name": "extractedContentPlain", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "full_content_markdown", + "getter_name": "fullContentMarkdown", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "full_content_plain", + "getter_name": "fullContentPlain", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "timestamp", + "getter_name": "timestamp", + "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": 2, + "references": [ + 1 + ], + "type": "table", + "data": { + "name": "tab_fts", + "was_declared_in_moor": true, + "columns": [ + { + "name": "title", + "getter_name": "title", + "moor_type": "string", + "nullable": false, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "url", + "getter_name": "url", + "moor_type": "string", + "nullable": false, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "extracted_content_plain", + "getter_name": "extractedContentPlain", + "moor_type": "string", + "nullable": false, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "full_content_plain", + "getter_name": "fullContentPlain", + "moor_type": "string", + "nullable": false, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + } + ], + "is_virtual": true, + "create_virtual_stmt": "CREATE VIRTUAL TABLE \"tab_fts\" USING fts5(title, url, extracted_content_plain, full_content_plain, content=tab, tokenize=\"trigram\")", + "without_rowid": false, + "constraints": [] + } + }, + { + "id": 3, + "references": [ + 1 + ], + "type": "trigger", + "data": { + "on": 1, + "references_in_body": [ + 1 + ], + "name": "tab_maintain_parent_chain_on_delete", + "sql": "CREATE TRIGGER tab_maintain_parent_chain_on_delete BEFORE DELETE ON tab BEGIN\n -- Update all children of the deleted row to point to its parent\n UPDATE tab \n SET parent_id = OLD.parent_id \n WHERE parent_id = OLD.id;\nEND;" + } + }, + { + "id": 4, + "references": [ + 1, + 2 + ], + "type": "trigger", + "data": { + "on": 1, + "references_in_body": [ + 1, + 2 + ], + "name": "tab_after_insert", + "sql": "CREATE TRIGGER tab_after_insert AFTER INSERT ON tab BEGIN\n INSERT INTO \n tab_fts(rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES (new.rowid, new.title, new.url, new.extracted_content_plain, new.full_content_plain);\nEND;" + } + }, + { + "id": 5, + "references": [ + 1, + 2 + ], + "type": "trigger", + "data": { + "on": 1, + "references_in_body": [ + 1, + 2 + ], + "name": "tab_after_delete", + "sql": "CREATE TRIGGER tab_after_delete AFTER DELETE ON tab BEGIN\n INSERT INTO \n tab_fts(tab_fts, rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES('delete', old.rowid, old.title, old.url, old.extracted_content_plain, old.full_content_plain);\nEND;" + } + }, + { + "id": 6, + "references": [ + 1, + 2 + ], + "type": "trigger", + "data": { + "on": 1, + "references_in_body": [ + 1, + 2 + ], + "name": "tab_after_update", + "sql": "CREATE TRIGGER tab_after_update AFTER UPDATE ON tab BEGIN\n INSERT INTO \n tab_fts(tab_fts, rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES('delete', old.rowid, old.title, old.url, old.extracted_content_plain, old.full_content_plain);\n INSERT INTO \n tab_fts(rowid, title, url, extracted_content_plain, full_content_plain) \n VALUES (new.rowid, new.title, new.url, new.extracted_content_plain, new.full_content_plain);\nEND;" + } + } + ], + "fixed_sql": [ + { + "name": "container", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"container\" (\"id\" TEXT PRIMARY KEY NOT NULL, \"name\" TEXT, \"color\" INTEGER NOT NULL, \"metadata\" TEXT);" + } + ] + }, + { + "name": "tab", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"tab\" (\"id\" TEXT PRIMARY KEY NOT NULL, \"parent_id\" TEXT REFERENCES tab(id)ON DELETE SET NULL, \"container_id\" TEXT REFERENCES container(id)ON DELETE CASCADE, \"order_key\" TEXT NOT NULL, \"url\" TEXT, \"title\" TEXT, \"is_probably_readerable\" INTEGER, \"extracted_content_markdown\" TEXT, \"extracted_content_plain\" TEXT, \"full_content_markdown\" TEXT, \"full_content_plain\" TEXT, \"timestamp\" INTEGER NOT NULL);" + } + ] + }, + { + "name": "tab_fts", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE VIRTUAL TABLE IF NOT EXISTS \"tab_fts\" USING fts5(title, url, extracted_content_plain, full_content_plain, content=tab, tokenize=\"trigram\");" + } + ] + }, + { + "name": "tab_maintain_parent_chain_on_delete", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER tab_maintain_parent_chain_on_delete BEFORE DELETE ON tab BEGIN UPDATE tab SET parent_id = OLD.parent_id WHERE parent_id = OLD.id;END" + } + ] + }, + { + "name": "tab_after_insert", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER tab_after_insert AFTER INSERT ON tab BEGIN INSERT INTO tab_fts (\"rowid\", title, url, extracted_content_plain, full_content_plain) VALUES (new.\"rowid\", new.title, new.url, new.extracted_content_plain, new.full_content_plain);END" + } + ] + }, + { + "name": "tab_after_delete", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER tab_after_delete AFTER DELETE ON tab BEGIN INSERT INTO tab_fts (tab_fts, \"rowid\", title, url, extracted_content_plain, full_content_plain) VALUES ('delete', old.\"rowid\", old.title, old.url, old.extracted_content_plain, old.full_content_plain);END" + } + ] + }, + { + "name": "tab_after_update", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER tab_after_update AFTER UPDATE ON tab BEGIN INSERT INTO tab_fts (tab_fts, \"rowid\", title, url, extracted_content_plain, full_content_plain) VALUES ('delete', old.\"rowid\", old.title, old.url, old.extracted_content_plain, old.full_content_plain);INSERT INTO tab_fts (\"rowid\", title, url, extracted_content_plain, full_content_plain) VALUES (new.\"rowid\", new.title, new.url, new.extracted_content_plain, new.full_content_plain);END" + } + ] + } + ] +} \ No newline at end of file diff --git a/app/drift_schemas/user/drift_schema_v2.json b/app/drift_schemas/user/drift_schema_v2.json index 33c1e31f..a08b8ba5 100644 --- a/app/drift_schemas/user/drift_schema_v2.json +++ b/app/drift_schemas/user/drift_schema_v2.json @@ -1 +1,232 @@ -{"_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":"setting","was_declared_in_moor":true,"columns":[{"name":"key","getter_name":"key","moor_type":"string","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"]},{"name":"partition_key","getter_name":"partitionKey","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"value","getter_name":"value","moor_type":"any","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"strict":true}},{"id":1,"references":[],"type":"table","data":{"name":"icon_cache","was_declared_in_moor":true,"columns":[{"name":"origin","getter_name":"origin","moor_type":"string","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"]},{"name":"icon_data","getter_name":"iconData","moor_type":"blob","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"fetch_date","getter_name":"fetchDate","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":2,"references":[],"type":"table","data":{"name":"onboarding","was_declared_in_moor":true,"columns":[{"name":"revision","getter_name":"revision","moor_type":"int","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"completion_date","getter_name":"completionDate","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":3,"references":[],"type":"table","data":{"name":"riverpod","was_declared_in_moor":true,"columns":[{"name":"key","getter_name":"key","moor_type":"string","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"]},{"name":"json","getter_name":"json","moor_type":"string","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"expireAt","getter_name":"expireAt","moor_type":"dateTime","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"destroyKey","getter_name":"destroyKey","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":true,"constraints":[]}}]} \ No newline at end of file +{ + "_meta": { + "description": "This file contains a serialized version of schema entities for drift.", + "version": "1.3.0" + }, + "options": { + "store_date_time_values_as_text": false + }, + "entities": [ + { + "id": 0, + "references": [], + "type": "table", + "data": { + "name": "setting", + "was_declared_in_moor": true, + "columns": [ + { + "name": "key", + "getter_name": "key", + "moor_type": "string", + "nullable": false, + "customConstraints": "PRIMARY KEY NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + "primary-key" + ] + }, + { + "name": "partition_key", + "getter_name": "partitionKey", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "value", + "getter_name": "value", + "moor_type": "any", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + } + ], + "is_virtual": false, + "without_rowid": false, + "constraints": [], + "strict": true + } + }, + { + "id": 1, + "references": [], + "type": "table", + "data": { + "name": "icon_cache", + "was_declared_in_moor": true, + "columns": [ + { + "name": "origin", + "getter_name": "origin", + "moor_type": "string", + "nullable": false, + "customConstraints": "PRIMARY KEY NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + "primary-key" + ] + }, + { + "name": "icon_data", + "getter_name": "iconData", + "moor_type": "blob", + "nullable": false, + "customConstraints": "NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "fetch_date", + "getter_name": "fetchDate", + "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": 2, + "references": [], + "type": "table", + "data": { + "name": "onboarding", + "was_declared_in_moor": true, + "columns": [ + { + "name": "revision", + "getter_name": "revision", + "moor_type": "int", + "nullable": false, + "customConstraints": "NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "completion_date", + "getter_name": "completionDate", + "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": 3, + "references": [], + "type": "table", + "data": { + "name": "riverpod", + "was_declared_in_moor": true, + "columns": [ + { + "name": "key", + "getter_name": "key", + "moor_type": "string", + "nullable": false, + "customConstraints": "PRIMARY KEY NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + "primary-key" + ] + }, + { + "name": "json", + "getter_name": "json", + "moor_type": "string", + "nullable": false, + "customConstraints": "NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "expireAt", + "getter_name": "expireAt", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "destroyKey", + "getter_name": "destroyKey", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + } + ], + "is_virtual": false, + "without_rowid": true, + "constraints": [] + } + } + ], + "fixed_sql": [ + { + "name": "setting", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"setting\" (\"key\" TEXT PRIMARY KEY NOT NULL, \"partition_key\" TEXT, \"value\" ANY) STRICT;" + } + ] + }, + { + "name": "icon_cache", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"icon_cache\" (\"origin\" TEXT PRIMARY KEY NOT NULL, \"icon_data\" BLOB NOT NULL, \"fetch_date\" INTEGER NOT NULL);" + } + ] + }, + { + "name": "onboarding", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"onboarding\" (\"revision\" INTEGER NOT NULL, \"completion_date\" INTEGER NOT NULL);" + } + ] + }, + { + "name": "riverpod", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"riverpod\" (\"key\" TEXT PRIMARY KEY NOT NULL, \"json\" TEXT NOT NULL, \"expireAt\" INTEGER, \"destroyKey\" TEXT) WITHOUT ROWID;" + } + ] + } + ] +} \ No newline at end of file diff --git a/app/drift_schemas/web_feed/drift_schema_v1.json b/app/drift_schemas/web_feed/drift_schema_v1.json index 18eddcf1..050c59a2 100644 --- a/app/drift_schemas/web_feed/drift_schema_v1.json +++ b/app/drift_schemas/web_feed/drift_schema_v1.json @@ -1 +1,738 @@ -{"_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":"feed","was_declared_in_moor":true,"columns":[{"name":"url","getter_name":"url","moor_type":"string","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"],"type_converter":{"dart_expr":"const UriConverter()","dart_type_name":"Uri"}},{"name":"title","getter_name":"title","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"description","getter_name":"description","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"icon","getter_name":"icon","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const UriConverterNullable()","dart_type_name":"Uri?"}},{"name":"site_link","getter_name":"siteLink","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const UriConverterNullable()","dart_type_name":"Uri?"}},{"name":"authors","getter_name":"authors","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedAuthorsConverter()","dart_type_name":"List"}},{"name":"tags","getter_name":"tags","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedCategoriesConverter()","dart_type_name":"List"}},{"name":"last_fetched","getter_name":"lastFetched","moor_type":"dateTime","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":1,"references":[0],"type":"table","data":{"name":"article","was_declared_in_moor":true,"columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":"PRIMARY KEY NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":["primary-key"]},{"name":"feed_id","getter_name":"feedId","moor_type":"string","nullable":false,"customConstraints":"NOT NULL REFERENCES feed(url)ON DELETE CASCADE","default_dart":null,"default_client_dart":null,"dsl_features":[{"foreign_key":{"to":{"table":"feed","column":"url"},"initially_deferred":false,"on_update":null,"on_delete":"cascade"}}],"type_converter":{"dart_expr":"const UriConverter()","dart_type_name":"Uri"}},{"name":"fetched","getter_name":"fetched","moor_type":"dateTime","nullable":false,"customConstraints":"NOT NULL","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created","getter_name":"created","moor_type":"dateTime","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"updated","getter_name":"updated","moor_type":"dateTime","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_read","getter_name":"lastRead","moor_type":"dateTime","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"title","getter_name":"title","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"authors","getter_name":"authors","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedAuthorsConverter()","dart_type_name":"List"}},{"name":"tags","getter_name":"tags","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedCategoriesConverter()","dart_type_name":"List"}},{"name":"links","getter_name":"links","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedLinksConverter()","dart_type_name":"List"}},{"name":"summaryHtml","getter_name":"summaryHtml","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"summaryMarkdown","getter_name":"summaryMarkdown","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"summaryPlain","getter_name":"summaryPlain","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"contentHtml","getter_name":"contentHtml","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"contentMarkdown","getter_name":"contentMarkdown","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"contentPlain","getter_name":"contentPlain","moor_type":"string","nullable":true,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":2,"references":[1,0],"type":"view","data":{"name":"article_view","sql":"CREATE VIEW article_view AS SELECT a.*, f.icon, f.site_link FROM article AS a INNER JOIN feed AS f ON f.url = a.feed_id;","dart_info_name":"ArticleView","columns":[{"name":"id","getter_name":"id","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"feed_id","getter_name":"feedId","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const UriConverter()","dart_type_name":"Uri"}},{"name":"fetched","getter_name":"fetched","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created","getter_name":"created","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"updated","getter_name":"updated","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_read","getter_name":"lastRead","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"title","getter_name":"title","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"authors","getter_name":"authors","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedAuthorsConverter()","dart_type_name":"List"}},{"name":"tags","getter_name":"tags","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedCategoriesConverter()","dart_type_name":"List"}},{"name":"links","getter_name":"links","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const FeedLinksConverter()","dart_type_name":"List"}},{"name":"summaryHtml","getter_name":"summaryHtml","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"summaryMarkdown","getter_name":"summaryMarkdown","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"summaryPlain","getter_name":"summaryPlain","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"contentHtml","getter_name":"contentHtml","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"contentMarkdown","getter_name":"contentMarkdown","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"contentPlain","getter_name":"contentPlain","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"icon","getter_name":"icon","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const UriConverterNullable()","dart_type_name":"Uri?"}},{"name":"site_link","getter_name":"siteLink","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const UriConverterNullable()","dart_type_name":"Uri?"}}]}},{"id":3,"references":[1],"type":"index","data":{"on":1,"name":"article_feed_id","sql":"CREATE INDEX article_feed_id ON article (feed_id);","unique":false,"columns":[]}},{"id":4,"references":[1],"type":"table","data":{"name":"article_fts","was_declared_in_moor":true,"columns":[{"name":"title","getter_name":"title","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"summaryPlain","getter_name":"summaryPlain","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"contentPlain","getter_name":"contentPlain","moor_type":"string","nullable":false,"customConstraints":"","default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":true,"create_virtual_stmt":"CREATE VIRTUAL TABLE \"article_fts\" USING fts5(title, summaryPlain, contentPlain, content=article, tokenize=\"trigram\")","without_rowid":false,"constraints":[]}},{"id":5,"references":[1,4],"type":"trigger","data":{"on":1,"references_in_body":[1,4],"name":"article_after_insert","sql":"CREATE TRIGGER article_after_insert AFTER INSERT ON article BEGIN\n INSERT INTO \n article_fts(rowid, title, summaryPlain, contentPlain) \n VALUES (new.rowid, new.title, new.summaryPlain, new.contentPlain);\nEND;"}},{"id":6,"references":[1,4],"type":"trigger","data":{"on":1,"references_in_body":[1,4],"name":"article_after_delete","sql":"CREATE TRIGGER article_after_delete AFTER DELETE ON article BEGIN\n INSERT INTO \n article_fts(article_fts, rowid, title, summaryPlain, contentPlain) \n VALUES('delete', old.rowid, old.title, old.summaryPlain, old.contentPlain);\nEND;"}},{"id":7,"references":[1,4],"type":"trigger","data":{"on":1,"references_in_body":[1,4],"name":"article_after_update","sql":"CREATE TRIGGER article_after_update AFTER UPDATE ON article BEGIN\n INSERT INTO \n article_fts(article_fts, rowid, title, summaryPlain, contentPlain) \n VALUES('delete', old.rowid, old.title, old.summaryPlain, old.contentPlain);\n INSERT INTO \n article_fts(rowid, title, summaryPlain, contentPlain) \n VALUES (new.rowid, new.title, new.summaryPlain, new.contentPlain);\nEND;"}}]} \ No newline at end of file +{ + "_meta": { + "description": "This file contains a serialized version of schema entities for drift.", + "version": "1.3.0" + }, + "options": { + "store_date_time_values_as_text": false + }, + "entities": [ + { + "id": 0, + "references": [], + "type": "table", + "data": { + "name": "feed", + "was_declared_in_moor": true, + "columns": [ + { + "name": "url", + "getter_name": "url", + "moor_type": "string", + "nullable": false, + "customConstraints": "PRIMARY KEY NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + "primary-key" + ], + "type_converter": { + "dart_expr": "const UriConverter()", + "dart_type_name": "Uri" + } + }, + { + "name": "title", + "getter_name": "title", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "description", + "getter_name": "description", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "icon", + "getter_name": "icon", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const UriConverterNullable()", + "dart_type_name": "Uri?" + } + }, + { + "name": "site_link", + "getter_name": "siteLink", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const UriConverterNullable()", + "dart_type_name": "Uri?" + } + }, + { + "name": "authors", + "getter_name": "authors", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedAuthorsConverter()", + "dart_type_name": "List" + } + }, + { + "name": "tags", + "getter_name": "tags", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedCategoriesConverter()", + "dart_type_name": "List" + } + }, + { + "name": "last_fetched", + "getter_name": "lastFetched", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + } + ], + "is_virtual": false, + "without_rowid": false, + "constraints": [] + } + }, + { + "id": 1, + "references": [ + 0 + ], + "type": "table", + "data": { + "name": "article", + "was_declared_in_moor": true, + "columns": [ + { + "name": "id", + "getter_name": "id", + "moor_type": "string", + "nullable": false, + "customConstraints": "PRIMARY KEY NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + "primary-key" + ] + }, + { + "name": "feed_id", + "getter_name": "feedId", + "moor_type": "string", + "nullable": false, + "customConstraints": "NOT NULL REFERENCES feed(url)ON DELETE CASCADE", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [ + { + "foreign_key": { + "to": { + "table": "feed", + "column": "url" + }, + "initially_deferred": false, + "on_update": null, + "on_delete": "cascade" + } + } + ], + "type_converter": { + "dart_expr": "const UriConverter()", + "dart_type_name": "Uri" + } + }, + { + "name": "fetched", + "getter_name": "fetched", + "moor_type": "dateTime", + "nullable": false, + "customConstraints": "NOT NULL", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "created", + "getter_name": "created", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "updated", + "getter_name": "updated", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "last_read", + "getter_name": "lastRead", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "title", + "getter_name": "title", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "authors", + "getter_name": "authors", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedAuthorsConverter()", + "dart_type_name": "List" + } + }, + { + "name": "tags", + "getter_name": "tags", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedCategoriesConverter()", + "dart_type_name": "List" + } + }, + { + "name": "links", + "getter_name": "links", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedLinksConverter()", + "dart_type_name": "List" + } + }, + { + "name": "summaryHtml", + "getter_name": "summaryHtml", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "summaryMarkdown", + "getter_name": "summaryMarkdown", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "summaryPlain", + "getter_name": "summaryPlain", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "contentHtml", + "getter_name": "contentHtml", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "contentMarkdown", + "getter_name": "contentMarkdown", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "contentPlain", + "getter_name": "contentPlain", + "moor_type": "string", + "nullable": true, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + } + ], + "is_virtual": false, + "without_rowid": false, + "constraints": [] + } + }, + { + "id": 2, + "references": [ + 1, + 0 + ], + "type": "view", + "data": { + "name": "article_view", + "sql": "CREATE VIEW article_view AS SELECT a.*, f.icon, f.site_link FROM article AS a INNER JOIN feed AS f ON f.url = a.feed_id", + "dart_info_name": "ArticleView", + "columns": [ + { + "name": "id", + "getter_name": "id", + "moor_type": "string", + "nullable": false, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "feed_id", + "getter_name": "feedId", + "moor_type": "string", + "nullable": false, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const UriConverter()", + "dart_type_name": "Uri" + } + }, + { + "name": "fetched", + "getter_name": "fetched", + "moor_type": "dateTime", + "nullable": false, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "created", + "getter_name": "created", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "updated", + "getter_name": "updated", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "last_read", + "getter_name": "lastRead", + "moor_type": "dateTime", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "title", + "getter_name": "title", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "authors", + "getter_name": "authors", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedAuthorsConverter()", + "dart_type_name": "List" + } + }, + { + "name": "tags", + "getter_name": "tags", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedCategoriesConverter()", + "dart_type_name": "List" + } + }, + { + "name": "links", + "getter_name": "links", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const FeedLinksConverter()", + "dart_type_name": "List" + } + }, + { + "name": "summaryHtml", + "getter_name": "summaryHtml", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "summaryMarkdown", + "getter_name": "summaryMarkdown", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "summaryPlain", + "getter_name": "summaryPlain", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "contentHtml", + "getter_name": "contentHtml", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "contentMarkdown", + "getter_name": "contentMarkdown", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "contentPlain", + "getter_name": "contentPlain", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "icon", + "getter_name": "icon", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const UriConverterNullable()", + "dart_type_name": "Uri?" + } + }, + { + "name": "site_link", + "getter_name": "siteLink", + "moor_type": "string", + "nullable": true, + "customConstraints": null, + "default_dart": null, + "default_client_dart": null, + "dsl_features": [], + "type_converter": { + "dart_expr": "const UriConverterNullable()", + "dart_type_name": "Uri?" + } + } + ] + } + }, + { + "id": 3, + "references": [ + 1 + ], + "type": "index", + "data": { + "on": 1, + "name": "article_feed_id", + "sql": "CREATE INDEX article_feed_id ON article (feed_id);", + "unique": false, + "columns": [] + } + }, + { + "id": 4, + "references": [ + 1 + ], + "type": "table", + "data": { + "name": "article_fts", + "was_declared_in_moor": true, + "columns": [ + { + "name": "title", + "getter_name": "title", + "moor_type": "string", + "nullable": false, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "summaryPlain", + "getter_name": "summaryPlain", + "moor_type": "string", + "nullable": false, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + }, + { + "name": "contentPlain", + "getter_name": "contentPlain", + "moor_type": "string", + "nullable": false, + "customConstraints": "", + "default_dart": null, + "default_client_dart": null, + "dsl_features": [] + } + ], + "is_virtual": true, + "create_virtual_stmt": "CREATE VIRTUAL TABLE \"article_fts\" USING fts5(title, summaryPlain, contentPlain, content=article, tokenize=\"trigram\")", + "without_rowid": false, + "constraints": [] + } + }, + { + "id": 5, + "references": [ + 1, + 4 + ], + "type": "trigger", + "data": { + "on": 1, + "references_in_body": [ + 1, + 4 + ], + "name": "article_after_insert", + "sql": "CREATE TRIGGER article_after_insert AFTER INSERT ON article BEGIN\n INSERT INTO \n article_fts(rowid, title, summaryPlain, contentPlain) \n VALUES (new.rowid, new.title, new.summaryPlain, new.contentPlain);\nEND;" + } + }, + { + "id": 6, + "references": [ + 1, + 4 + ], + "type": "trigger", + "data": { + "on": 1, + "references_in_body": [ + 1, + 4 + ], + "name": "article_after_delete", + "sql": "CREATE TRIGGER article_after_delete AFTER DELETE ON article BEGIN\n INSERT INTO \n article_fts(article_fts, rowid, title, summaryPlain, contentPlain) \n VALUES('delete', old.rowid, old.title, old.summaryPlain, old.contentPlain);\nEND;" + } + }, + { + "id": 7, + "references": [ + 1, + 4 + ], + "type": "trigger", + "data": { + "on": 1, + "references_in_body": [ + 1, + 4 + ], + "name": "article_after_update", + "sql": "CREATE TRIGGER article_after_update AFTER UPDATE ON article BEGIN\n INSERT INTO \n article_fts(article_fts, rowid, title, summaryPlain, contentPlain) \n VALUES('delete', old.rowid, old.title, old.summaryPlain, old.contentPlain);\n INSERT INTO \n article_fts(rowid, title, summaryPlain, contentPlain) \n VALUES (new.rowid, new.title, new.summaryPlain, new.contentPlain);\nEND;" + } + } + ], + "fixed_sql": [ + { + "name": "feed", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"feed\" (\"url\" TEXT PRIMARY KEY NOT NULL, \"title\" TEXT, \"description\" TEXT, \"icon\" TEXT, \"site_link\" TEXT, \"authors\" TEXT, \"tags\" TEXT, \"last_fetched\" INTEGER);" + } + ] + }, + { + "name": "article", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TABLE IF NOT EXISTS \"article\" (\"id\" TEXT PRIMARY KEY NOT NULL, \"feed_id\" TEXT NOT NULL REFERENCES feed(url)ON DELETE CASCADE, \"fetched\" INTEGER NOT NULL, \"created\" INTEGER, \"updated\" INTEGER, \"last_read\" INTEGER, \"title\" TEXT, \"authors\" TEXT, \"tags\" TEXT, \"links\" TEXT, \"summaryHtml\" TEXT, \"summaryMarkdown\" TEXT, \"summaryPlain\" TEXT, \"contentHtml\" TEXT, \"contentMarkdown\" TEXT, \"contentPlain\" TEXT);" + } + ] + }, + { + "name": "article_view", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE VIEW article_view AS SELECT a.*, f.icon, f.site_link FROM article AS a INNER JOIN feed AS f ON f.url = a.feed_id" + } + ] + }, + { + "name": "article_feed_id", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE INDEX article_feed_id ON article (feed_id)" + } + ] + }, + { + "name": "article_fts", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE VIRTUAL TABLE IF NOT EXISTS \"article_fts\" USING fts5(title, summaryPlain, contentPlain, content=article, tokenize=\"trigram\");" + } + ] + }, + { + "name": "article_after_insert", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER article_after_insert AFTER INSERT ON article BEGIN INSERT INTO article_fts (\"rowid\", title, summaryPlain, contentPlain) VALUES (new.\"rowid\", new.title, new.summaryPlain, new.contentPlain);END" + } + ] + }, + { + "name": "article_after_delete", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER article_after_delete AFTER DELETE ON article BEGIN INSERT INTO article_fts (article_fts, \"rowid\", title, summaryPlain, contentPlain) VALUES ('delete', old.\"rowid\", old.title, old.summaryPlain, old.contentPlain);END" + } + ] + }, + { + "name": "article_after_update", + "sql": [ + { + "dialect": "sqlite", + "sql": "CREATE TRIGGER article_after_update AFTER UPDATE ON article BEGIN INSERT INTO article_fts (article_fts, \"rowid\", title, summaryPlain, contentPlain) VALUES ('delete', old.\"rowid\", old.title, old.summaryPlain, old.contentPlain);INSERT INTO article_fts (\"rowid\", title, summaryPlain, contentPlain) VALUES (new.\"rowid\", new.title, new.summaryPlain, new.contentPlain);END" + } + ] + } + ] +} \ No newline at end of file diff --git a/app/lib/features/bangs/data/database/database.steps.dart b/app/lib/features/bangs/data/database/database.steps.dart index 807f8af6..56d7267b 100644 --- a/app/lib/features/bangs/data/database/database.steps.dart +++ b/app/lib/features/bangs/data/database/database.steps.dart @@ -1,23 +1,3 @@ -/* - * Copyright (c) 2024-2025 Fabian Freund. - * - * This file is part of WebLibre - * (see https://weblibre.eu). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - // dart format width=80 import 'package:drift/internal/versioned_schema.dart' as i0; import 'package:drift/drift.dart' as i1; @@ -750,7 +730,7 @@ final class Schema4 extends i0.VersionedSchema { bangTriggersAfterDeleteFts, bangTriggersAfterUpdateFts, ]; - late final Shape6 bang = Shape6( + late final Shape10 bang = Shape10( source: i0.VersionedTable( entityName: 'bang', withoutRowId: false, @@ -766,7 +746,7 @@ final class Schema4 extends i0.VersionedSchema { _column_6, _column_7, _column_26, - _column_27, + _column_32, ], attachedDatabase: database, ), @@ -798,18 +778,18 @@ final class Schema4 extends i0.VersionedSchema { 'CREATE TRIGGER bang_triggers_after_update AFTER UPDATE ON bang BEGIN DELETE FROM bang_triggers WHERE "trigger" = old."trigger" AND "group" = old."group";INSERT INTO bang_triggers ("trigger", "group", additional_trigger) SELECT new."trigger", new."group", json_each.value FROM json_each(new.additional_triggers)WHERE new.additional_triggers IS NOT NULL;END', 'bang_triggers_after_update', ); - late final Shape1 bangSync = Shape1( + late final Shape11 bangSync = Shape11( source: i0.VersionedTable( entityName: 'bang_sync', withoutRowId: false, isStrict: false, tableConstraints: [], - columns: [_column_8, _column_9], + columns: [_column_8, _column_33], attachedDatabase: database, ), alias: null, ); - late final Shape2 bangFrequency = Shape2( + late final Shape12 bangFrequency = Shape12( source: i0.VersionedTable( entityName: 'bang_frequency', withoutRowId: false, @@ -818,12 +798,12 @@ final class Schema4 extends i0.VersionedSchema { 'PRIMARY KEY("trigger", "group")', 'FOREIGN KEY("trigger", "group")REFERENCES bang("trigger", "group")ON DELETE CASCADE', ], - columns: [_column_0, _column_1, _column_10, _column_11], + columns: [_column_0, _column_1, _column_10, _column_34], attachedDatabase: database, ), alias: null, ); - late final Shape3 bangHistory = Shape3( + late final Shape13 bangHistory = Shape13( source: i0.VersionedTable( entityName: 'bang_history', withoutRowId: false, @@ -831,7 +811,7 @@ final class Schema4 extends i0.VersionedSchema { tableConstraints: [ 'FOREIGN KEY("trigger", "group")REFERENCES bang("trigger", "group")ON DELETE CASCADE', ], - columns: [_column_12, _column_0, _column_1, _column_13], + columns: [_column_12, _column_0, _column_1, _column_35], attachedDatabase: database, ), alias: null, @@ -841,7 +821,7 @@ final class Schema4 extends i0.VersionedSchema { entityName: 'bang_fts', moduleAndArgs: 'fts5(trigger, website_name, content=bang, prefix=\'2 3\')', - columns: [_column_14, _column_15], + columns: [_column_36, _column_37], attachedDatabase: database, ), alias: null, @@ -851,12 +831,12 @@ final class Schema4 extends i0.VersionedSchema { entityName: 'bang_triggers_fts', moduleAndArgs: 'fts5(additional_trigger, content=bang_triggers, prefix=\'2 3\')', - columns: [_column_29], + columns: [_column_38], attachedDatabase: database, ), alias: null, ); - late final Shape9 bangDataView = Shape9( + late final Shape14 bangDataView = Shape14( source: i0.VersionedView( entityName: 'bang_data_view', createViewStmt: @@ -871,9 +851,9 @@ final class Schema4 extends i0.VersionedSchema { _column_22, _column_23, _column_30, - _column_31, + _column_39, _column_24, - _column_25, + _column_40, ], attachedDatabase: database, ), @@ -905,6 +885,165 @@ final class Schema4 extends i0.VersionedSchema { ); } +class Shape10 extends i0.VersionedTable { + Shape10({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get trigger => + columnsByName['trigger']! as i1.GeneratedColumn; + i1.GeneratedColumn get group => + columnsByName['group']! as i1.GeneratedColumn; + i1.GeneratedColumn get websiteName => + columnsByName['website_name']! as i1.GeneratedColumn; + i1.GeneratedColumn get domain => + columnsByName['domain']! as i1.GeneratedColumn; + i1.GeneratedColumn get urlTemplate => + columnsByName['url_template']! as i1.GeneratedColumn; + i1.GeneratedColumn get category => + columnsByName['category']! as i1.GeneratedColumn; + i1.GeneratedColumn get subCategory => + columnsByName['sub_category']! as i1.GeneratedColumn; + i1.GeneratedColumn get format => + columnsByName['format']! as i1.GeneratedColumn; + i1.GeneratedColumn get additionalTriggers => + columnsByName['additional_triggers']! as i1.GeneratedColumn; + i1.GeneratedColumn get searxngApi => + columnsByName['searxng_api']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_32(String aliasedName) => + i1.GeneratedColumn( + 'searxng_api', + aliasedName, + false, + type: i1.DriftSqlType.int, + $customConstraints: 'NOT NULL DEFAULT FALSE', + defaultValue: const i1.CustomExpression('FALSE'), + ); + +class Shape11 extends i0.VersionedTable { + Shape11({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get group => + columnsByName['group']! as i1.GeneratedColumn; + i1.GeneratedColumn get lastSync => + columnsByName['last_sync']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_33(String aliasedName) => + i1.GeneratedColumn( + 'last_sync', + aliasedName, + false, + type: i1.DriftSqlType.int, + $customConstraints: 'NOT NULL', + ); + +class Shape12 extends i0.VersionedTable { + Shape12({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get trigger => + columnsByName['trigger']! as i1.GeneratedColumn; + i1.GeneratedColumn get group => + columnsByName['group']! as i1.GeneratedColumn; + i1.GeneratedColumn get frequency => + columnsByName['frequency']! as i1.GeneratedColumn; + i1.GeneratedColumn get lastUsed => + columnsByName['last_used']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_34(String aliasedName) => + i1.GeneratedColumn( + 'last_used', + aliasedName, + false, + type: i1.DriftSqlType.int, + $customConstraints: 'NOT NULL', + ); + +class Shape13 extends i0.VersionedTable { + Shape13({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get searchQuery => + columnsByName['search_query']! as i1.GeneratedColumn; + i1.GeneratedColumn get trigger => + columnsByName['trigger']! as i1.GeneratedColumn; + i1.GeneratedColumn get group => + columnsByName['group']! as i1.GeneratedColumn; + i1.GeneratedColumn get searchDate => + columnsByName['search_date']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_35(String aliasedName) => + i1.GeneratedColumn( + 'search_date', + aliasedName, + false, + type: i1.DriftSqlType.int, + $customConstraints: 'NOT NULL', + ); +i1.GeneratedColumn _column_36(String aliasedName) => + i1.GeneratedColumn( + 'trigger', + aliasedName, + true, + type: i1.DriftSqlType.string, + $customConstraints: '', + ); +i1.GeneratedColumn _column_37(String aliasedName) => + i1.GeneratedColumn( + 'website_name', + aliasedName, + true, + type: i1.DriftSqlType.string, + $customConstraints: '', + ); +i1.GeneratedColumn _column_38(String aliasedName) => + i1.GeneratedColumn( + 'additional_trigger', + aliasedName, + true, + type: i1.DriftSqlType.string, + $customConstraints: '', + ); + +class Shape14 extends i0.VersionedView { + Shape14({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get trigger => + columnsByName['trigger']! as i1.GeneratedColumn; + i1.GeneratedColumn get group => + columnsByName['group']! as i1.GeneratedColumn; + i1.GeneratedColumn get websiteName => + columnsByName['website_name']! as i1.GeneratedColumn; + i1.GeneratedColumn get domain => + columnsByName['domain']! as i1.GeneratedColumn; + i1.GeneratedColumn get urlTemplate => + columnsByName['url_template']! as i1.GeneratedColumn; + i1.GeneratedColumn get category => + columnsByName['category']! as i1.GeneratedColumn; + i1.GeneratedColumn get subCategory => + columnsByName['sub_category']! as i1.GeneratedColumn; + i1.GeneratedColumn get format => + columnsByName['format']! as i1.GeneratedColumn; + i1.GeneratedColumn get additionalTriggers => + columnsByName['additional_triggers']! as i1.GeneratedColumn; + i1.GeneratedColumn get searxngApi => + columnsByName['searxng_api']! as i1.GeneratedColumn; + i1.GeneratedColumn get frequency => + columnsByName['frequency']! as i1.GeneratedColumn; + i1.GeneratedColumn get lastUsed => + columnsByName['last_used']! as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_39(String aliasedName) => + i1.GeneratedColumn( + 'searxng_api', + aliasedName, + false, + type: i1.DriftSqlType.int, + ); +i1.GeneratedColumn _column_40(String aliasedName) => + i1.GeneratedColumn( + 'last_used', + aliasedName, + true, + type: i1.DriftSqlType.int, + ); i0.MigrationStepWithVersion migrationSteps({ required Future Function(i1.Migrator m, Schema2 schema) from1To2, required Future Function(i1.Migrator m, Schema3 schema) from2To3, diff --git a/app/lib/features/user/data/database/database.steps.dart b/app/lib/features/user/data/database/database.steps.dart index 654dd430..4a4880a9 100644 --- a/app/lib/features/user/data/database/database.steps.dart +++ b/app/lib/features/user/data/database/database.steps.dart @@ -1,23 +1,3 @@ -/* - * Copyright (c) 2024-2025 Fabian Freund. - * - * This file is part of WebLibre - * (see https://weblibre.eu). - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - // dart format width=80 import 'package:drift/internal/versioned_schema.dart' as i0; import 'package:drift/drift.dart' as i1; @@ -121,8 +101,8 @@ class Shape1 extends i0.VersionedTable { columnsByName['origin']! as i1.GeneratedColumn; i1.GeneratedColumn get iconData => columnsByName['icon_data']! as i1.GeneratedColumn; - i1.GeneratedColumn get fetchDate => - columnsByName['fetch_date']! as i1.GeneratedColumn; + i1.GeneratedColumn get fetchDate => + columnsByName['fetch_date']! as i1.GeneratedColumn; } i1.GeneratedColumn _column_3(String aliasedName) => @@ -141,12 +121,12 @@ i1.GeneratedColumn _column_4(String aliasedName) => type: i1.DriftSqlType.blob, $customConstraints: 'NOT NULL', ); -i1.GeneratedColumn _column_5(String aliasedName) => - i1.GeneratedColumn( +i1.GeneratedColumn _column_5(String aliasedName) => + i1.GeneratedColumn( 'fetch_date', aliasedName, false, - type: i1.DriftSqlType.dateTime, + type: i1.DriftSqlType.int, $customConstraints: 'NOT NULL', ); @@ -154,8 +134,8 @@ class Shape2 extends i0.VersionedTable { Shape2({required super.source, required super.alias}) : super.aliased(); i1.GeneratedColumn get revision => columnsByName['revision']! as i1.GeneratedColumn; - i1.GeneratedColumn get completionDate => - columnsByName['completion_date']! as i1.GeneratedColumn; + i1.GeneratedColumn get completionDate => + columnsByName['completion_date']! as i1.GeneratedColumn; } i1.GeneratedColumn _column_6(String aliasedName) => @@ -166,12 +146,12 @@ i1.GeneratedColumn _column_6(String aliasedName) => type: i1.DriftSqlType.int, $customConstraints: 'NOT NULL', ); -i1.GeneratedColumn _column_7(String aliasedName) => - i1.GeneratedColumn( +i1.GeneratedColumn _column_7(String aliasedName) => + i1.GeneratedColumn( 'completion_date', aliasedName, false, - type: i1.DriftSqlType.dateTime, + type: i1.DriftSqlType.int, $customConstraints: 'NOT NULL', ); @@ -181,8 +161,8 @@ class Shape3 extends i0.VersionedTable { columnsByName['key']! as i1.GeneratedColumn; i1.GeneratedColumn get json => columnsByName['json']! as i1.GeneratedColumn; - i1.GeneratedColumn get expireAt => - columnsByName['expireAt']! as i1.GeneratedColumn; + i1.GeneratedColumn get expireAt => + columnsByName['expireAt']! as i1.GeneratedColumn; i1.GeneratedColumn get destroyKey => columnsByName['destroyKey']! as i1.GeneratedColumn; } @@ -195,12 +175,12 @@ i1.GeneratedColumn _column_8(String aliasedName) => type: i1.DriftSqlType.string, $customConstraints: 'NOT NULL', ); -i1.GeneratedColumn _column_9(String aliasedName) => - i1.GeneratedColumn( +i1.GeneratedColumn _column_9(String aliasedName) => + i1.GeneratedColumn( 'expireAt', aliasedName, true, - type: i1.DriftSqlType.dateTime, + type: i1.DriftSqlType.int, $customConstraints: '', ); i1.GeneratedColumn _column_10(String aliasedName) => diff --git a/app/test/drift/bangs/generated/schema_v4.dart b/app/test/drift/bangs/generated/schema_v4.dart index bc38da4d..69d22f13 100644 --- a/app/test/drift/bangs/generated/schema_v4.dart +++ b/app/test/drift/bangs/generated/schema_v4.dart @@ -81,11 +81,11 @@ class Bang extends Table with TableInfo { requiredDuringInsert: false, $customConstraints: '', ); - late final GeneratedColumn searxngApi = GeneratedColumn( + late final GeneratedColumn searxngApi = GeneratedColumn( 'searxng_api', aliasedName, false, - type: DriftSqlType.bool, + type: DriftSqlType.int, requiredDuringInsert: false, $customConstraints: 'NOT NULL DEFAULT FALSE', defaultValue: const CustomExpression('FALSE'), @@ -151,7 +151,7 @@ class Bang extends Table with TableInfo { data['${effectivePrefix}additional_triggers'], ), searxngApi: attachedDatabase.typeMapping.read( - DriftSqlType.bool, + DriftSqlType.int, data['${effectivePrefix}searxng_api'], )!, ); @@ -180,7 +180,7 @@ class BangData extends DataClass implements Insertable { final String? subCategory; final String? format; final String? additionalTriggers; - final bool searxngApi; + final int searxngApi; const BangData({ required this.trigger, required this.group, @@ -213,7 +213,7 @@ class BangData extends DataClass implements Insertable { if (!nullToAbsent || additionalTriggers != null) { map['additional_triggers'] = Variable(additionalTriggers); } - map['searxng_api'] = Variable(searxngApi); + map['searxng_api'] = Variable(searxngApi); return map; } @@ -234,7 +234,7 @@ class BangData extends DataClass implements Insertable { additionalTriggers: serializer.fromJson( json['additionalTriggers'], ), - searxngApi: serializer.fromJson(json['searxngApi']), + searxngApi: serializer.fromJson(json['searxngApi']), ); } @override @@ -250,7 +250,7 @@ class BangData extends DataClass implements Insertable { 'subCategory': serializer.toJson(subCategory), 'format': serializer.toJson(format), 'additionalTriggers': serializer.toJson(additionalTriggers), - 'searxngApi': serializer.toJson(searxngApi), + 'searxngApi': serializer.toJson(searxngApi), }; } @@ -264,7 +264,7 @@ class BangData extends DataClass implements Insertable { Value subCategory = const Value.absent(), Value format = const Value.absent(), Value additionalTriggers = const Value.absent(), - bool? searxngApi, + int? searxngApi, }) => BangData( trigger: trigger ?? this.trigger, group: group ?? this.group, @@ -360,7 +360,7 @@ class BangCompanion extends UpdateCompanion { final Value subCategory; final Value format; final Value additionalTriggers; - final Value searxngApi; + final Value searxngApi; final Value rowid; const BangCompanion({ this.trigger = const Value.absent(), @@ -402,7 +402,7 @@ class BangCompanion extends UpdateCompanion { Expression? subCategory, Expression? format, Expression? additionalTriggers, - Expression? searxngApi, + Expression? searxngApi, Expression? rowid, }) { return RawValuesInsertable({ @@ -430,7 +430,7 @@ class BangCompanion extends UpdateCompanion { Value? subCategory, Value? format, Value? additionalTriggers, - Value? searxngApi, + Value? searxngApi, Value? rowid, }) { return BangCompanion( @@ -479,7 +479,7 @@ class BangCompanion extends UpdateCompanion { map['additional_triggers'] = Variable(additionalTriggers.value); } if (searxngApi.present) { - map['searxng_api'] = Variable(searxngApi.value); + map['searxng_api'] = Variable(searxngApi.value); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -749,11 +749,11 @@ class BangSync extends Table with TableInfo { requiredDuringInsert: false, $customConstraints: 'PRIMARY KEY NOT NULL', ); - late final GeneratedColumn lastSync = GeneratedColumn( + late final GeneratedColumn lastSync = GeneratedColumn( 'last_sync', aliasedName, false, - type: DriftSqlType.dateTime, + type: DriftSqlType.int, requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); @@ -775,7 +775,7 @@ class BangSync extends Table with TableInfo { data['${effectivePrefix}group'], )!, lastSync: attachedDatabase.typeMapping.read( - DriftSqlType.dateTime, + DriftSqlType.int, data['${effectivePrefix}last_sync'], )!, ); @@ -792,13 +792,13 @@ class BangSync extends Table with TableInfo { class BangSyncData extends DataClass implements Insertable { final int group; - final DateTime lastSync; + final int lastSync; const BangSyncData({required this.group, required this.lastSync}); @override Map toColumns(bool nullToAbsent) { final map = {}; map['group'] = Variable(group); - map['last_sync'] = Variable(lastSync); + map['last_sync'] = Variable(lastSync); return map; } @@ -809,7 +809,7 @@ class BangSyncData extends DataClass implements Insertable { serializer ??= driftRuntimeOptions.defaultSerializer; return BangSyncData( group: serializer.fromJson(json['group']), - lastSync: serializer.fromJson(json['lastSync']), + lastSync: serializer.fromJson(json['lastSync']), ); } @override @@ -817,11 +817,11 @@ class BangSyncData extends DataClass implements Insertable { serializer ??= driftRuntimeOptions.defaultSerializer; return { 'group': serializer.toJson(group), - 'lastSync': serializer.toJson(lastSync), + 'lastSync': serializer.toJson(lastSync), }; } - BangSyncData copyWith({int? group, DateTime? lastSync}) => BangSyncData( + BangSyncData copyWith({int? group, int? lastSync}) => BangSyncData( group: group ?? this.group, lastSync: lastSync ?? this.lastSync, ); @@ -853,18 +853,18 @@ class BangSyncData extends DataClass implements Insertable { class BangSyncCompanion extends UpdateCompanion { final Value group; - final Value lastSync; + final Value lastSync; const BangSyncCompanion({ this.group = const Value.absent(), this.lastSync = const Value.absent(), }); BangSyncCompanion.insert({ this.group = const Value.absent(), - required DateTime lastSync, + required int lastSync, }) : lastSync = Value(lastSync); static Insertable custom({ Expression? group, - Expression? lastSync, + Expression? lastSync, }) { return RawValuesInsertable({ if (group != null) 'group': group, @@ -872,7 +872,7 @@ class BangSyncCompanion extends UpdateCompanion { }); } - BangSyncCompanion copyWith({Value? group, Value? lastSync}) { + BangSyncCompanion copyWith({Value? group, Value? lastSync}) { return BangSyncCompanion( group: group ?? this.group, lastSync: lastSync ?? this.lastSync, @@ -886,7 +886,7 @@ class BangSyncCompanion extends UpdateCompanion { map['group'] = Variable(group.value); } if (lastSync.present) { - map['last_sync'] = Variable(lastSync.value); + map['last_sync'] = Variable(lastSync.value); } return map; } @@ -931,11 +931,11 @@ class BangFrequency extends Table requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); - late final GeneratedColumn lastUsed = GeneratedColumn( + late final GeneratedColumn lastUsed = GeneratedColumn( 'last_used', aliasedName, false, - type: DriftSqlType.dateTime, + type: DriftSqlType.int, requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); @@ -965,7 +965,7 @@ class BangFrequency extends Table data['${effectivePrefix}frequency'], )!, lastUsed: attachedDatabase.typeMapping.read( - DriftSqlType.dateTime, + DriftSqlType.int, data['${effectivePrefix}last_used'], )!, ); @@ -990,7 +990,7 @@ class BangFrequencyData extends DataClass final String trigger; final int group; final int frequency; - final DateTime lastUsed; + final int lastUsed; const BangFrequencyData({ required this.trigger, required this.group, @@ -1003,7 +1003,7 @@ class BangFrequencyData extends DataClass map['trigger'] = Variable(trigger); map['group'] = Variable(group); map['frequency'] = Variable(frequency); - map['last_used'] = Variable(lastUsed); + map['last_used'] = Variable(lastUsed); return map; } @@ -1016,7 +1016,7 @@ class BangFrequencyData extends DataClass trigger: serializer.fromJson(json['trigger']), group: serializer.fromJson(json['group']), frequency: serializer.fromJson(json['frequency']), - lastUsed: serializer.fromJson(json['lastUsed']), + lastUsed: serializer.fromJson(json['lastUsed']), ); } @override @@ -1026,7 +1026,7 @@ class BangFrequencyData extends DataClass 'trigger': serializer.toJson(trigger), 'group': serializer.toJson(group), 'frequency': serializer.toJson(frequency), - 'lastUsed': serializer.toJson(lastUsed), + 'lastUsed': serializer.toJson(lastUsed), }; } @@ -1034,7 +1034,7 @@ class BangFrequencyData extends DataClass String? trigger, int? group, int? frequency, - DateTime? lastUsed, + int? lastUsed, }) => BangFrequencyData( trigger: trigger ?? this.trigger, group: group ?? this.group, @@ -1077,7 +1077,7 @@ class BangFrequencyCompanion extends UpdateCompanion { final Value trigger; final Value group; final Value frequency; - final Value lastUsed; + final Value lastUsed; final Value rowid; const BangFrequencyCompanion({ this.trigger = const Value.absent(), @@ -1090,7 +1090,7 @@ class BangFrequencyCompanion extends UpdateCompanion { required String trigger, required int group, required int frequency, - required DateTime lastUsed, + required int lastUsed, this.rowid = const Value.absent(), }) : trigger = Value(trigger), group = Value(group), @@ -1100,7 +1100,7 @@ class BangFrequencyCompanion extends UpdateCompanion { Expression? trigger, Expression? group, Expression? frequency, - Expression? lastUsed, + Expression? lastUsed, Expression? rowid, }) { return RawValuesInsertable({ @@ -1116,7 +1116,7 @@ class BangFrequencyCompanion extends UpdateCompanion { Value? trigger, Value? group, Value? frequency, - Value? lastUsed, + Value? lastUsed, Value? rowid, }) { return BangFrequencyCompanion( @@ -1141,7 +1141,7 @@ class BangFrequencyCompanion extends UpdateCompanion { map['frequency'] = Variable(frequency.value); } if (lastUsed.present) { - map['last_used'] = Variable(lastUsed.value); + map['last_used'] = Variable(lastUsed.value); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -1191,11 +1191,11 @@ class BangHistory extends Table with TableInfo { requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); - late final GeneratedColumn searchDate = GeneratedColumn( + late final GeneratedColumn searchDate = GeneratedColumn( 'search_date', aliasedName, false, - type: DriftSqlType.dateTime, + type: DriftSqlType.int, requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); @@ -1230,7 +1230,7 @@ class BangHistory extends Table with TableInfo { data['${effectivePrefix}group'], )!, searchDate: attachedDatabase.typeMapping.read( - DriftSqlType.dateTime, + DriftSqlType.int, data['${effectivePrefix}search_date'], )!, ); @@ -1253,7 +1253,7 @@ class BangHistoryData extends DataClass implements Insertable { final String searchQuery; final String trigger; final int group; - final DateTime searchDate; + final int searchDate; const BangHistoryData({ required this.searchQuery, required this.trigger, @@ -1266,7 +1266,7 @@ class BangHistoryData extends DataClass implements Insertable { map['search_query'] = Variable(searchQuery); map['trigger'] = Variable(trigger); map['group'] = Variable(group); - map['search_date'] = Variable(searchDate); + map['search_date'] = Variable(searchDate); return map; } @@ -1279,7 +1279,7 @@ class BangHistoryData extends DataClass implements Insertable { searchQuery: serializer.fromJson(json['searchQuery']), trigger: serializer.fromJson(json['trigger']), group: serializer.fromJson(json['group']), - searchDate: serializer.fromJson(json['searchDate']), + searchDate: serializer.fromJson(json['searchDate']), ); } @override @@ -1289,7 +1289,7 @@ class BangHistoryData extends DataClass implements Insertable { 'searchQuery': serializer.toJson(searchQuery), 'trigger': serializer.toJson(trigger), 'group': serializer.toJson(group), - 'searchDate': serializer.toJson(searchDate), + 'searchDate': serializer.toJson(searchDate), }; } @@ -1297,7 +1297,7 @@ class BangHistoryData extends DataClass implements Insertable { String? searchQuery, String? trigger, int? group, - DateTime? searchDate, + int? searchDate, }) => BangHistoryData( searchQuery: searchQuery ?? this.searchQuery, trigger: trigger ?? this.trigger, @@ -1344,7 +1344,7 @@ class BangHistoryCompanion extends UpdateCompanion { final Value searchQuery; final Value trigger; final Value group; - final Value searchDate; + final Value searchDate; final Value rowid; const BangHistoryCompanion({ this.searchQuery = const Value.absent(), @@ -1357,7 +1357,7 @@ class BangHistoryCompanion extends UpdateCompanion { required String searchQuery, required String trigger, required int group, - required DateTime searchDate, + required int searchDate, this.rowid = const Value.absent(), }) : searchQuery = Value(searchQuery), trigger = Value(trigger), @@ -1367,7 +1367,7 @@ class BangHistoryCompanion extends UpdateCompanion { Expression? searchQuery, Expression? trigger, Expression? group, - Expression? searchDate, + Expression? searchDate, Expression? rowid, }) { return RawValuesInsertable({ @@ -1383,7 +1383,7 @@ class BangHistoryCompanion extends UpdateCompanion { Value? searchQuery, Value? trigger, Value? group, - Value? searchDate, + Value? searchDate, Value? rowid, }) { return BangHistoryCompanion( @@ -1408,7 +1408,7 @@ class BangHistoryCompanion extends UpdateCompanion { map['group'] = Variable(group.value); } if (searchDate.present) { - map['search_date'] = Variable(searchDate.value); + map['search_date'] = Variable(searchDate.value); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -1440,17 +1440,17 @@ class BangFts extends Table late final GeneratedColumn trigger = GeneratedColumn( 'trigger', aliasedName, - false, + true, type: DriftSqlType.string, - requiredDuringInsert: true, + requiredDuringInsert: false, $customConstraints: '', ); late final GeneratedColumn websiteName = GeneratedColumn( 'website_name', aliasedName, - false, + true, type: DriftSqlType.string, - requiredDuringInsert: true, + requiredDuringInsert: false, $customConstraints: '', ); @override @@ -1469,11 +1469,11 @@ class BangFts extends Table trigger: attachedDatabase.typeMapping.read( DriftSqlType.string, data['${effectivePrefix}trigger'], - )!, + ), websiteName: attachedDatabase.typeMapping.read( DriftSqlType.string, data['${effectivePrefix}website_name'], - )!, + ), ); } @@ -1482,20 +1482,26 @@ class BangFts extends Table return BangFts(attachedDatabase, alias); } + @override + bool get dontWriteConstraints => true; @override String get moduleAndArgs => 'fts5(trigger, website_name, content=bang, prefix=\'2 3\')'; } class BangFtsData extends DataClass implements Insertable { - final String trigger; - final String websiteName; - const BangFtsData({required this.trigger, required this.websiteName}); + final String? trigger; + final String? websiteName; + const BangFtsData({this.trigger, this.websiteName}); @override Map toColumns(bool nullToAbsent) { final map = {}; - map['trigger'] = Variable(trigger); - map['website_name'] = Variable(websiteName); + if (!nullToAbsent || trigger != null) { + map['trigger'] = Variable(trigger); + } + if (!nullToAbsent || websiteName != null) { + map['website_name'] = Variable(websiteName); + } return map; } @@ -1505,22 +1511,25 @@ class BangFtsData extends DataClass implements Insertable { }) { serializer ??= driftRuntimeOptions.defaultSerializer; return BangFtsData( - trigger: serializer.fromJson(json['trigger']), - websiteName: serializer.fromJson(json['websiteName']), + trigger: serializer.fromJson(json['trigger']), + websiteName: serializer.fromJson(json['websiteName']), ); } @override Map toJson({ValueSerializer? serializer}) { serializer ??= driftRuntimeOptions.defaultSerializer; return { - 'trigger': serializer.toJson(trigger), - 'websiteName': serializer.toJson(websiteName), + 'trigger': serializer.toJson(trigger), + 'websiteName': serializer.toJson(websiteName), }; } - BangFtsData copyWith({String? trigger, String? websiteName}) => BangFtsData( - trigger: trigger ?? this.trigger, - websiteName: websiteName ?? this.websiteName, + BangFtsData copyWith({ + Value trigger = const Value.absent(), + Value websiteName = const Value.absent(), + }) => BangFtsData( + trigger: trigger.present ? trigger.value : this.trigger, + websiteName: websiteName.present ? websiteName.value : this.websiteName, ); BangFtsData copyWithCompanion(BangFtsCompanion data) { return BangFtsData( @@ -1551,8 +1560,8 @@ class BangFtsData extends DataClass implements Insertable { } class BangFtsCompanion extends UpdateCompanion { - final Value trigger; - final Value websiteName; + final Value trigger; + final Value websiteName; final Value rowid; const BangFtsCompanion({ this.trigger = const Value.absent(), @@ -1560,11 +1569,10 @@ class BangFtsCompanion extends UpdateCompanion { this.rowid = const Value.absent(), }); BangFtsCompanion.insert({ - required String trigger, - required String websiteName, + this.trigger = const Value.absent(), + this.websiteName = const Value.absent(), this.rowid = const Value.absent(), - }) : trigger = Value(trigger), - websiteName = Value(websiteName); + }); static Insertable custom({ Expression? trigger, Expression? websiteName, @@ -1578,8 +1586,8 @@ class BangFtsCompanion extends UpdateCompanion { } BangFtsCompanion copyWith({ - Value? trigger, - Value? websiteName, + Value? trigger, + Value? websiteName, Value? rowid, }) { return BangFtsCompanion( @@ -1627,9 +1635,9 @@ class BangTriggersFts extends Table GeneratedColumn( 'additional_trigger', aliasedName, - false, + true, type: DriftSqlType.string, - requiredDuringInsert: true, + requiredDuringInsert: false, $customConstraints: '', ); @override @@ -1648,7 +1656,7 @@ class BangTriggersFts extends Table additionalTrigger: attachedDatabase.typeMapping.read( DriftSqlType.string, data['${effectivePrefix}additional_trigger'], - )!, + ), ); } @@ -1657,6 +1665,8 @@ class BangTriggersFts extends Table return BangTriggersFts(attachedDatabase, alias); } + @override + bool get dontWriteConstraints => true; @override String get moduleAndArgs => 'fts5(additional_trigger, content=bang_triggers, prefix=\'2 3\')'; @@ -1664,12 +1674,14 @@ class BangTriggersFts extends Table class BangTriggersFtsData extends DataClass implements Insertable { - final String additionalTrigger; - const BangTriggersFtsData({required this.additionalTrigger}); + final String? additionalTrigger; + const BangTriggersFtsData({this.additionalTrigger}); @override Map toColumns(bool nullToAbsent) { final map = {}; - map['additional_trigger'] = Variable(additionalTrigger); + if (!nullToAbsent || additionalTrigger != null) { + map['additional_trigger'] = Variable(additionalTrigger); + } return map; } @@ -1679,21 +1691,26 @@ class BangTriggersFtsData extends DataClass }) { serializer ??= driftRuntimeOptions.defaultSerializer; return BangTriggersFtsData( - additionalTrigger: serializer.fromJson(json['additionalTrigger']), + additionalTrigger: serializer.fromJson( + json['additionalTrigger'], + ), ); } @override Map toJson({ValueSerializer? serializer}) { serializer ??= driftRuntimeOptions.defaultSerializer; return { - 'additionalTrigger': serializer.toJson(additionalTrigger), + 'additionalTrigger': serializer.toJson(additionalTrigger), }; } - BangTriggersFtsData copyWith({String? additionalTrigger}) => - BangTriggersFtsData( - additionalTrigger: additionalTrigger ?? this.additionalTrigger, - ); + BangTriggersFtsData copyWith({ + Value additionalTrigger = const Value.absent(), + }) => BangTriggersFtsData( + additionalTrigger: additionalTrigger.present + ? additionalTrigger.value + : this.additionalTrigger, + ); BangTriggersFtsData copyWithCompanion(BangTriggersFtsCompanion data) { return BangTriggersFtsData( additionalTrigger: data.additionalTrigger.present @@ -1720,16 +1737,16 @@ class BangTriggersFtsData extends DataClass } class BangTriggersFtsCompanion extends UpdateCompanion { - final Value additionalTrigger; + final Value additionalTrigger; final Value rowid; const BangTriggersFtsCompanion({ this.additionalTrigger = const Value.absent(), this.rowid = const Value.absent(), }); BangTriggersFtsCompanion.insert({ - required String additionalTrigger, + this.additionalTrigger = const Value.absent(), this.rowid = const Value.absent(), - }) : additionalTrigger = Value(additionalTrigger); + }); static Insertable custom({ Expression? additionalTrigger, Expression? rowid, @@ -1741,7 +1758,7 @@ class BangTriggersFtsCompanion extends UpdateCompanion { } BangTriggersFtsCompanion copyWith({ - Value? additionalTrigger, + Value? additionalTrigger, Value? rowid, }) { return BangTriggersFtsCompanion( @@ -1782,9 +1799,9 @@ class BangDataViewData extends DataClass { final String? subCategory; final String? format; final String? additionalTriggers; - final bool searxngApi; + final int searxngApi; final int? frequency; - final DateTime? lastUsed; + final int? lastUsed; const BangDataViewData({ required this.trigger, required this.group, @@ -1816,9 +1833,9 @@ class BangDataViewData extends DataClass { additionalTriggers: serializer.fromJson( json['additionalTriggers'], ), - searxngApi: serializer.fromJson(json['searxngApi']), + searxngApi: serializer.fromJson(json['searxngApi']), frequency: serializer.fromJson(json['frequency']), - lastUsed: serializer.fromJson(json['lastUsed']), + lastUsed: serializer.fromJson(json['lastUsed']), ); } @override @@ -1834,9 +1851,9 @@ class BangDataViewData extends DataClass { 'subCategory': serializer.toJson(subCategory), 'format': serializer.toJson(format), 'additionalTriggers': serializer.toJson(additionalTriggers), - 'searxngApi': serializer.toJson(searxngApi), + 'searxngApi': serializer.toJson(searxngApi), 'frequency': serializer.toJson(frequency), - 'lastUsed': serializer.toJson(lastUsed), + 'lastUsed': serializer.toJson(lastUsed), }; } @@ -1850,9 +1867,9 @@ class BangDataViewData extends DataClass { Value subCategory = const Value.absent(), Value format = const Value.absent(), Value additionalTriggers = const Value.absent(), - bool? searxngApi, + int? searxngApi, Value frequency = const Value.absent(), - Value lastUsed = const Value.absent(), + Value lastUsed = const Value.absent(), }) => BangDataViewData( trigger: trigger ?? this.trigger, group: group ?? this.group, @@ -1949,7 +1966,7 @@ class BangDataView extends ViewInfo @override Map get createViewStatements => { SqlDialect.sqlite: - '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";', + '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"', }; @override BangDataView get asDslTable => this; @@ -1994,7 +2011,7 @@ class BangDataView extends ViewInfo data['${effectivePrefix}additional_triggers'], ), searxngApi: attachedDatabase.typeMapping.read( - DriftSqlType.bool, + DriftSqlType.int, data['${effectivePrefix}searxng_api'], )!, frequency: attachedDatabase.typeMapping.read( @@ -2002,7 +2019,7 @@ class BangDataView extends ViewInfo data['${effectivePrefix}frequency'], ), lastUsed: attachedDatabase.typeMapping.read( - DriftSqlType.dateTime, + DriftSqlType.int, data['${effectivePrefix}last_used'], ), ); @@ -2063,14 +2080,11 @@ class BangDataView extends ViewInfo true, type: DriftSqlType.string, ); - late final GeneratedColumn searxngApi = GeneratedColumn( + late final GeneratedColumn searxngApi = GeneratedColumn( 'searxng_api', aliasedName, false, - type: DriftSqlType.bool, - defaultConstraints: GeneratedColumn.constraintIsAlways( - 'CHECK ("searxng_api" IN (0, 1))', - ), + type: DriftSqlType.int, ); late final GeneratedColumn frequency = GeneratedColumn( 'frequency', @@ -2078,11 +2092,11 @@ class BangDataView extends ViewInfo true, type: DriftSqlType.int, ); - late final GeneratedColumn lastUsed = GeneratedColumn( + late final GeneratedColumn lastUsed = GeneratedColumn( 'last_used', aliasedName, true, - type: DriftSqlType.dateTime, + type: DriftSqlType.int, ); @override BangDataView createAlias(String alias) { @@ -2092,7 +2106,7 @@ class BangDataView extends ViewInfo @override Query? get query => null; @override - Set get readTables => const {}; + Set get readTables => const {'bang', 'bang_frequency'}; } class DatabaseAtV4 extends GeneratedDatabase { @@ -2171,56 +2185,80 @@ class DatabaseAtV4 extends GeneratedDatabase { 'bang', limitUpdateKind: UpdateKind.delete, ), - result: [], + result: [TableUpdate('bang_triggers', kind: UpdateKind.delete)], + ), + WritePropagation( + on: TableUpdateQuery.onTableName( + 'bang', + limitUpdateKind: UpdateKind.insert, + ), + result: [TableUpdate('bang_triggers', kind: UpdateKind.insert)], + ), + WritePropagation( + on: TableUpdateQuery.onTableName( + 'bang', + limitUpdateKind: UpdateKind.update, + ), + result: [ + TableUpdate('bang_triggers', kind: UpdateKind.delete), + TableUpdate('bang_triggers', kind: UpdateKind.insert), + ], ), WritePropagation( on: TableUpdateQuery.onTableName( 'bang', limitUpdateKind: UpdateKind.delete, ), - result: [], + result: [TableUpdate('bang_frequency', kind: UpdateKind.delete)], ), WritePropagation( on: TableUpdateQuery.onTableName( 'bang', limitUpdateKind: UpdateKind.delete, ), - result: [], + result: [TableUpdate('bang_history', kind: UpdateKind.delete)], + ), + WritePropagation( + on: TableUpdateQuery.onTableName( + 'bang', + limitUpdateKind: UpdateKind.insert, + ), + result: [TableUpdate('bang_fts', kind: UpdateKind.insert)], ), WritePropagation( on: TableUpdateQuery.onTableName( 'bang', limitUpdateKind: UpdateKind.delete, ), - result: [], + result: [TableUpdate('bang_fts', kind: UpdateKind.insert)], ), WritePropagation( on: TableUpdateQuery.onTableName( 'bang', - limitUpdateKind: UpdateKind.delete, + limitUpdateKind: UpdateKind.update, ), - result: [], + result: [TableUpdate('bang_fts', kind: UpdateKind.insert)], + ), + WritePropagation( + on: TableUpdateQuery.onTableName( + 'bang_triggers', + limitUpdateKind: UpdateKind.insert, + ), + result: [TableUpdate('bang_triggers_fts', kind: UpdateKind.insert)], ), WritePropagation( on: TableUpdateQuery.onTableName( 'bang_triggers', limitUpdateKind: UpdateKind.delete, ), - result: [], + result: [TableUpdate('bang_triggers_fts', kind: UpdateKind.insert)], ), WritePropagation( on: TableUpdateQuery.onTableName( 'bang_triggers', - limitUpdateKind: UpdateKind.delete, + limitUpdateKind: UpdateKind.update, ), - result: [], - ), - WritePropagation( - on: TableUpdateQuery.onTableName( - 'bang_triggers', - limitUpdateKind: UpdateKind.delete, - ), - result: [], + result: [TableUpdate('bang_triggers_fts', kind: UpdateKind.insert)], ), ]); @override diff --git a/app/test/drift/user/generated/schema_v2.dart b/app/test/drift/user/generated/schema_v2.dart index b70d507c..2c3f9f61 100644 --- a/app/test/drift/user/generated/schema_v2.dart +++ b/app/test/drift/user/generated/schema_v2.dart @@ -248,11 +248,11 @@ class IconCache extends Table with TableInfo { requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); - late final GeneratedColumn fetchDate = GeneratedColumn( + late final GeneratedColumn fetchDate = GeneratedColumn( 'fetch_date', aliasedName, false, - type: DriftSqlType.dateTime, + type: DriftSqlType.int, requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); @@ -278,7 +278,7 @@ class IconCache extends Table with TableInfo { data['${effectivePrefix}icon_data'], )!, fetchDate: attachedDatabase.typeMapping.read( - DriftSqlType.dateTime, + DriftSqlType.int, data['${effectivePrefix}fetch_date'], )!, ); @@ -296,7 +296,7 @@ class IconCache extends Table with TableInfo { class IconCacheData extends DataClass implements Insertable { final String origin; final i2.Uint8List iconData; - final DateTime fetchDate; + final int fetchDate; const IconCacheData({ required this.origin, required this.iconData, @@ -307,7 +307,7 @@ class IconCacheData extends DataClass implements Insertable { final map = {}; map['origin'] = Variable(origin); map['icon_data'] = Variable(iconData); - map['fetch_date'] = Variable(fetchDate); + map['fetch_date'] = Variable(fetchDate); return map; } @@ -319,7 +319,7 @@ class IconCacheData extends DataClass implements Insertable { return IconCacheData( origin: serializer.fromJson(json['origin']), iconData: serializer.fromJson(json['iconData']), - fetchDate: serializer.fromJson(json['fetchDate']), + fetchDate: serializer.fromJson(json['fetchDate']), ); } @override @@ -328,14 +328,14 @@ class IconCacheData extends DataClass implements Insertable { return { 'origin': serializer.toJson(origin), 'iconData': serializer.toJson(iconData), - 'fetchDate': serializer.toJson(fetchDate), + 'fetchDate': serializer.toJson(fetchDate), }; } IconCacheData copyWith({ String? origin, i2.Uint8List? iconData, - DateTime? fetchDate, + int? fetchDate, }) => IconCacheData( origin: origin ?? this.origin, iconData: iconData ?? this.iconData, @@ -374,7 +374,7 @@ class IconCacheData extends DataClass implements Insertable { class IconCacheCompanion extends UpdateCompanion { final Value origin; final Value iconData; - final Value fetchDate; + final Value fetchDate; final Value rowid; const IconCacheCompanion({ this.origin = const Value.absent(), @@ -385,7 +385,7 @@ class IconCacheCompanion extends UpdateCompanion { IconCacheCompanion.insert({ required String origin, required i2.Uint8List iconData, - required DateTime fetchDate, + required int fetchDate, this.rowid = const Value.absent(), }) : origin = Value(origin), iconData = Value(iconData), @@ -393,7 +393,7 @@ class IconCacheCompanion extends UpdateCompanion { static Insertable custom({ Expression? origin, Expression? iconData, - Expression? fetchDate, + Expression? fetchDate, Expression? rowid, }) { return RawValuesInsertable({ @@ -407,7 +407,7 @@ class IconCacheCompanion extends UpdateCompanion { IconCacheCompanion copyWith({ Value? origin, Value? iconData, - Value? fetchDate, + Value? fetchDate, Value? rowid, }) { return IconCacheCompanion( @@ -428,7 +428,7 @@ class IconCacheCompanion extends UpdateCompanion { map['icon_data'] = Variable(iconData.value); } if (fetchDate.present) { - map['fetch_date'] = Variable(fetchDate.value); + map['fetch_date'] = Variable(fetchDate.value); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -461,15 +461,14 @@ class Onboarding extends Table with TableInfo { requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); - late final GeneratedColumn completionDate = - GeneratedColumn( - 'completion_date', - aliasedName, - false, - type: DriftSqlType.dateTime, - requiredDuringInsert: true, - $customConstraints: 'NOT NULL', - ); + late final GeneratedColumn completionDate = GeneratedColumn( + 'completion_date', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + $customConstraints: 'NOT NULL', + ); @override List get $columns => [revision, completionDate]; @override @@ -488,7 +487,7 @@ class Onboarding extends Table with TableInfo { data['${effectivePrefix}revision'], )!, completionDate: attachedDatabase.typeMapping.read( - DriftSqlType.dateTime, + DriftSqlType.int, data['${effectivePrefix}completion_date'], )!, ); @@ -505,13 +504,13 @@ class Onboarding extends Table with TableInfo { class OnboardingData extends DataClass implements Insertable { final int revision; - final DateTime completionDate; + final int completionDate; const OnboardingData({required this.revision, required this.completionDate}); @override Map toColumns(bool nullToAbsent) { final map = {}; map['revision'] = Variable(revision); - map['completion_date'] = Variable(completionDate); + map['completion_date'] = Variable(completionDate); return map; } @@ -522,7 +521,7 @@ class OnboardingData extends DataClass implements Insertable { serializer ??= driftRuntimeOptions.defaultSerializer; return OnboardingData( revision: serializer.fromJson(json['revision']), - completionDate: serializer.fromJson(json['completionDate']), + completionDate: serializer.fromJson(json['completionDate']), ); } @override @@ -530,11 +529,11 @@ class OnboardingData extends DataClass implements Insertable { serializer ??= driftRuntimeOptions.defaultSerializer; return { 'revision': serializer.toJson(revision), - 'completionDate': serializer.toJson(completionDate), + 'completionDate': serializer.toJson(completionDate), }; } - OnboardingData copyWith({int? revision, DateTime? completionDate}) => + OnboardingData copyWith({int? revision, int? completionDate}) => OnboardingData( revision: revision ?? this.revision, completionDate: completionDate ?? this.completionDate, @@ -569,7 +568,7 @@ class OnboardingData extends DataClass implements Insertable { class OnboardingCompanion extends UpdateCompanion { final Value revision; - final Value completionDate; + final Value completionDate; final Value rowid; const OnboardingCompanion({ this.revision = const Value.absent(), @@ -578,13 +577,13 @@ class OnboardingCompanion extends UpdateCompanion { }); OnboardingCompanion.insert({ required int revision, - required DateTime completionDate, + required int completionDate, this.rowid = const Value.absent(), }) : revision = Value(revision), completionDate = Value(completionDate); static Insertable custom({ Expression? revision, - Expression? completionDate, + Expression? completionDate, Expression? rowid, }) { return RawValuesInsertable({ @@ -596,7 +595,7 @@ class OnboardingCompanion extends UpdateCompanion { OnboardingCompanion copyWith({ Value? revision, - Value? completionDate, + Value? completionDate, Value? rowid, }) { return OnboardingCompanion( @@ -613,7 +612,7 @@ class OnboardingCompanion extends UpdateCompanion { map['revision'] = Variable(revision.value); } if (completionDate.present) { - map['completion_date'] = Variable(completionDate.value); + map['completion_date'] = Variable(completionDate.value); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -653,11 +652,11 @@ class Riverpod extends Table with TableInfo { requiredDuringInsert: true, $customConstraints: 'NOT NULL', ); - late final GeneratedColumn expireAt = GeneratedColumn( + late final GeneratedColumn expireAt = GeneratedColumn( 'expireAt', aliasedName, true, - type: DriftSqlType.dateTime, + type: DriftSqlType.int, requiredDuringInsert: false, $customConstraints: '', ); @@ -691,7 +690,7 @@ class Riverpod extends Table with TableInfo { data['${effectivePrefix}json'], )!, expireAt: attachedDatabase.typeMapping.read( - DriftSqlType.dateTime, + DriftSqlType.int, data['${effectivePrefix}expireAt'], ), destroyKey: attachedDatabase.typeMapping.read( @@ -715,7 +714,7 @@ class Riverpod extends Table with TableInfo { class RiverpodData extends DataClass implements Insertable { final String key; final String json; - final DateTime? expireAt; + final int? expireAt; final String? destroyKey; const RiverpodData({ required this.key, @@ -729,7 +728,7 @@ class RiverpodData extends DataClass implements Insertable { map['key'] = Variable(key); map['json'] = Variable(json); if (!nullToAbsent || expireAt != null) { - map['expireAt'] = Variable(expireAt); + map['expireAt'] = Variable(expireAt); } if (!nullToAbsent || destroyKey != null) { map['destroyKey'] = Variable(destroyKey); @@ -745,7 +744,7 @@ class RiverpodData extends DataClass implements Insertable { return RiverpodData( key: serializer.fromJson(json['key']), json: serializer.fromJson(json['json']), - expireAt: serializer.fromJson(json['expireAt']), + expireAt: serializer.fromJson(json['expireAt']), destroyKey: serializer.fromJson(json['destroyKey']), ); } @@ -755,7 +754,7 @@ class RiverpodData extends DataClass implements Insertable { return { 'key': serializer.toJson(key), 'json': serializer.toJson(json), - 'expireAt': serializer.toJson(expireAt), + 'expireAt': serializer.toJson(expireAt), 'destroyKey': serializer.toJson(destroyKey), }; } @@ -763,7 +762,7 @@ class RiverpodData extends DataClass implements Insertable { RiverpodData copyWith({ String? key, String? json, - Value expireAt = const Value.absent(), + Value expireAt = const Value.absent(), Value destroyKey = const Value.absent(), }) => RiverpodData( key: key ?? this.key, @@ -808,7 +807,7 @@ class RiverpodData extends DataClass implements Insertable { class RiverpodCompanion extends UpdateCompanion { final Value key; final Value json; - final Value expireAt; + final Value expireAt; final Value destroyKey; const RiverpodCompanion({ this.key = const Value.absent(), @@ -826,7 +825,7 @@ class RiverpodCompanion extends UpdateCompanion { static Insertable custom({ Expression? key, Expression? json, - Expression? expireAt, + Expression? expireAt, Expression? destroyKey, }) { return RawValuesInsertable({ @@ -840,7 +839,7 @@ class RiverpodCompanion extends UpdateCompanion { RiverpodCompanion copyWith({ Value? key, Value? json, - Value? expireAt, + Value? expireAt, Value? destroyKey, }) { return RiverpodCompanion( @@ -861,7 +860,7 @@ class RiverpodCompanion extends UpdateCompanion { map['json'] = Variable(json.value); } if (expireAt.present) { - map['expireAt'] = Variable(expireAt.value); + map['expireAt'] = Variable(expireAt.value); } if (destroyKey.present) { map['destroyKey'] = Variable(destroyKey.value);