diff --git a/drift_schemas/twonly_database/drift_schema_v11.json b/drift_schemas/twonly_database/drift_schema_v11.json new file mode 100644 index 0000000..8803126 --- /dev/null +++ b/drift_schemas/twonly_database/drift_schema_v11.json @@ -0,0 +1 @@ +{"_meta":{"description":"This file contains a serialized version of schema entities for drift.","version":"1.2.0"},"options":{"store_date_time_values_as_text":false},"entities":[{"id":0,"references":[],"type":"table","data":{"name":"contacts","was_declared_in_moor":false,"columns":[{"name":"user_id","getter_name":"userId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"username","getter_name":"username","moor_type":"string","nullable":false,"customConstraints":null,"defaultConstraints":"UNIQUE","dialectAwareDefaultConstraints":{"sqlite":"UNIQUE"},"default_dart":null,"default_client_dart":null,"dsl_features":["unique"]},{"name":"display_name","getter_name":"displayName","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"nick_name","getter_name":"nickName","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"avatar_svg","getter_name":"avatarSvg","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"my_avatar_counter","getter_name":"myAvatarCounter","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"accepted","getter_name":"accepted","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"accepted\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"accepted\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"requested","getter_name":"requested","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"requested\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"requested\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"blocked","getter_name":"blocked","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"blocked\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"blocked\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"verified","getter_name":"verified","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"verified\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"verified\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"archived","getter_name":"archived","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"archived\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"archived\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"pinned","getter_name":"pinned","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"pinned\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"pinned\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"deleted","getter_name":"deleted","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"deleted\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"deleted\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"also_best_friend","getter_name":"alsoBestFriend","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"also_best_friend\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"also_best_friend\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"delete_messages_after_x_minutes","getter_name":"deleteMessagesAfterXMinutes","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('1440')","default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]},{"name":"total_media_counter","getter_name":"totalMediaCounter","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"last_message_send","getter_name":"lastMessageSend","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_message_received","getter_name":"lastMessageReceived","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_flame_counter_change","getter_name":"lastFlameCounterChange","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_flame_sync","getter_name":"lastFlameSync","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"last_message_exchange","getter_name":"lastMessageExchange","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]},{"name":"flame_counter","getter_name":"flameCounter","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"explicit_pk":["user_id"]}},{"id":1,"references":[0],"type":"table","data":{"name":"messages","was_declared_in_moor":false,"columns":[{"name":"contact_id","getter_name":"contactId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES contacts (user_id)","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES contacts (user_id)"},"default_dart":null,"default_client_dart":null,"dsl_features":[{"foreign_key":{"to":{"table":"contacts","column":"user_id"},"initially_deferred":false,"on_update":null,"on_delete":null}}]},{"name":"message_id","getter_name":"messageId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"message_other_id","getter_name":"messageOtherId","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"media_upload_id","getter_name":"mediaUploadId","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"media_download_id","getter_name":"mediaDownloadId","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"response_to_message_id","getter_name":"responseToMessageId","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"response_to_other_message_id","getter_name":"responseToOtherMessageId","moor_type":"int","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"acknowledge_by_user","getter_name":"acknowledgeByUser","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"acknowledge_by_user\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"acknowledge_by_user\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"media_stored","getter_name":"mediaStored","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"media_stored\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"media_stored\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"download_state","getter_name":"downloadState","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('2')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumIndexConverter(DownloadState.values)","dart_type_name":"DownloadState"}},{"name":"acknowledge_by_server","getter_name":"acknowledgeByServer","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"acknowledge_by_server\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"acknowledge_by_server\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"error_while_sending","getter_name":"errorWhileSending","moor_type":"bool","nullable":false,"customConstraints":null,"defaultConstraints":"CHECK (\"error_while_sending\" IN (0, 1))","dialectAwareDefaultConstraints":{"sqlite":"CHECK (\"error_while_sending\" IN (0, 1))"},"default_dart":"const CustomExpression('0')","default_client_dart":null,"dsl_features":[]},{"name":"kind","getter_name":"kind","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(MessageKind.values)","dart_type_name":"MessageKind"}},{"name":"content_json","getter_name":"contentJson","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"opened_at","getter_name":"openedAt","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"send_at","getter_name":"sendAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]},{"name":"updated_at","getter_name":"updatedAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":2,"references":[],"type":"table","data":{"name":"media_uploads","was_declared_in_moor":false,"columns":[{"name":"media_upload_id","getter_name":"mediaUploadId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"state","getter_name":"state","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'pending\\'')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"const EnumNameConverter(UploadState.values)","dart_type_name":"UploadState"}},{"name":"metadata","getter_name":"metadata","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"MediaUploadMetadataConverter()","dart_type_name":"MediaUploadMetadata"}},{"name":"message_ids","getter_name":"messageIds","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"IntListTypeConverter()","dart_type_name":"List"}},{"name":"encryption_data","getter_name":"encryptionData","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"MediaEncryptionDataConverter()","dart_type_name":"MediaEncryptionData"}},{"name":"upload_tokens","getter_name":"uploadTokens","moor_type":"string","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"MediaUploadTokensConverter()","dart_type_name":"MediaUploadTokens"}},{"name":"already_notified","getter_name":"alreadyNotified","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('\\'[]\\'')","default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"IntListTypeConverter()","dart_type_name":"List"}}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":3,"references":[],"type":"table","data":{"name":"media_downloads","was_declared_in_moor":false,"columns":[{"name":"message_id","getter_name":"messageId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"download_token","getter_name":"downloadToken","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[],"type_converter":{"dart_expr":"IntListTypeConverter()","dart_type_name":"List"}}],"is_virtual":false,"without_rowid":false,"constraints":[]}},{"id":4,"references":[],"type":"table","data":{"name":"signal_identity_key_stores","was_declared_in_moor":false,"columns":[{"name":"device_id","getter_name":"deviceId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"identity_key","getter_name":"identityKey","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"explicit_pk":["device_id","name"]}},{"id":5,"references":[],"type":"table","data":{"name":"signal_pre_key_stores","was_declared_in_moor":false,"columns":[{"name":"pre_key_id","getter_name":"preKeyId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"pre_key","getter_name":"preKey","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"explicit_pk":["pre_key_id"]}},{"id":6,"references":[],"type":"table","data":{"name":"signal_sender_key_stores","was_declared_in_moor":false,"columns":[{"name":"sender_key_name","getter_name":"senderKeyName","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"sender_key","getter_name":"senderKey","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"explicit_pk":["sender_key_name"]}},{"id":7,"references":[],"type":"table","data":{"name":"signal_session_stores","was_declared_in_moor":false,"columns":[{"name":"device_id","getter_name":"deviceId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"name","getter_name":"name","moor_type":"string","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"session_record","getter_name":"sessionRecord","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"explicit_pk":["device_id","name"]}},{"id":8,"references":[],"type":"table","data":{"name":"signal_contact_pre_keys","was_declared_in_moor":false,"columns":[{"name":"contact_id","getter_name":"contactId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"pre_key_id","getter_name":"preKeyId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"pre_key","getter_name":"preKey","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"explicit_pk":["contact_id","pre_key_id"]}},{"id":9,"references":[],"type":"table","data":{"name":"signal_contact_signed_pre_keys","was_declared_in_moor":false,"columns":[{"name":"contact_id","getter_name":"contactId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"signed_pre_key_id","getter_name":"signedPreKeyId","moor_type":"int","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"signed_pre_key","getter_name":"signedPreKey","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"signed_pre_key_signature","getter_name":"signedPreKeySignature","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"created_at","getter_name":"createdAt","moor_type":"dateTime","nullable":false,"customConstraints":null,"default_dart":"const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')","default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[],"explicit_pk":["contact_id"]}},{"id":10,"references":[0,1],"type":"table","data":{"name":"message_retransmissions","was_declared_in_moor":false,"columns":[{"name":"retransmission_id","getter_name":"retransmissionId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"PRIMARY KEY AUTOINCREMENT","dialectAwareDefaultConstraints":{"sqlite":"PRIMARY KEY AUTOINCREMENT"},"default_dart":null,"default_client_dart":null,"dsl_features":["auto-increment"]},{"name":"contact_id","getter_name":"contactId","moor_type":"int","nullable":false,"customConstraints":null,"defaultConstraints":"REFERENCES contacts (user_id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES contacts (user_id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":[{"foreign_key":{"to":{"table":"contacts","column":"user_id"},"initially_deferred":false,"on_update":null,"on_delete":"cascade"}}]},{"name":"message_id","getter_name":"messageId","moor_type":"int","nullable":true,"customConstraints":null,"defaultConstraints":"REFERENCES messages (message_id) ON DELETE CASCADE","dialectAwareDefaultConstraints":{"sqlite":"REFERENCES messages (message_id) ON DELETE CASCADE"},"default_dart":null,"default_client_dart":null,"dsl_features":[{"foreign_key":{"to":{"table":"messages","column":"message_id"},"initially_deferred":false,"on_update":null,"on_delete":"cascade"}}]},{"name":"plaintext_content","getter_name":"plaintextContent","moor_type":"blob","nullable":false,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"push_data","getter_name":"pushData","moor_type":"blob","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]},{"name":"acknowledge_by_server_at","getter_name":"acknowledgeByServerAt","moor_type":"dateTime","nullable":true,"customConstraints":null,"default_dart":null,"default_client_dart":null,"dsl_features":[]}],"is_virtual":false,"without_rowid":false,"constraints":[]}}]} \ No newline at end of file diff --git a/lib/src/database/twonly_database.dart b/lib/src/database/twonly_database.dart index 36a6759..f008d01 100644 --- a/lib/src/database/twonly_database.dart +++ b/lib/src/database/twonly_database.dart @@ -53,7 +53,7 @@ class TwonlyDatabase extends _$TwonlyDatabase { TwonlyDatabase.forTesting(DatabaseConnection super.connection); @override - int get schemaVersion => 10; + int get schemaVersion => 11; static QueryExecutor _openConnection() { return driftDatabase( @@ -118,6 +118,9 @@ class TwonlyDatabase extends _$TwonlyDatabase { m.createTable(signalContactSignedPreKeys); m.addColumn(schema.contacts, schema.contacts.deleted); }, + from10To11: (m, schema) async { + m.createTable(messageRetransmissions); + }, ), ); } diff --git a/lib/src/database/twonly_database.steps.dart b/lib/src/database/twonly_database.steps.dart index 01ebcc5..3a45301 100644 --- a/lib/src/database/twonly_database.steps.dart +++ b/lib/src/database/twonly_database.steps.dart @@ -2192,6 +2192,279 @@ i1.GeneratedColumn _column_61(String aliasedName) => i1.GeneratedColumn( 'signed_pre_key_signature', aliasedName, false, type: i1.DriftSqlType.blob); + +final class Schema11 extends i0.VersionedSchema { + Schema11({required super.database}) : super(version: 11); + @override + late final List entities = [ + contacts, + messages, + mediaUploads, + mediaDownloads, + signalIdentityKeyStores, + signalPreKeyStores, + signalSenderKeyStores, + signalSessionStores, + signalContactPreKeys, + signalContactSignedPreKeys, + messageRetransmissions, + ]; + late final Shape13 contacts = Shape13( + source: i0.VersionedTable( + entityName: 'contacts', + withoutRowId: false, + isStrict: false, + tableConstraints: [ + 'PRIMARY KEY(user_id)', + ], + columns: [ + _column_0, + _column_1, + _column_2, + _column_3, + _column_4, + _column_5, + _column_6, + _column_7, + _column_8, + _column_9, + _column_39, + _column_53, + _column_57, + _column_54, + _column_40, + _column_10, + _column_11, + _column_12, + _column_13, + _column_14, + _column_55, + _column_15, + _column_16, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape10 messages = Shape10( + source: i0.VersionedTable( + entityName: 'messages', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_17, + _column_18, + _column_19, + _column_48, + _column_49, + _column_20, + _column_21, + _column_22, + _column_52, + _column_23, + _column_24, + _column_25, + _column_26, + _column_27, + _column_28, + _column_29, + _column_30, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape7 mediaUploads = Shape7( + source: i0.VersionedTable( + entityName: 'media_uploads', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_41, + _column_42, + _column_56, + _column_44, + _column_45, + _column_46, + _column_47, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape9 mediaDownloads = Shape9( + source: i0.VersionedTable( + entityName: 'media_downloads', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_50, + _column_51, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape2 signalIdentityKeyStores = Shape2( + source: i0.VersionedTable( + entityName: 'signal_identity_key_stores', + withoutRowId: false, + isStrict: false, + tableConstraints: [ + 'PRIMARY KEY(device_id, name)', + ], + columns: [ + _column_31, + _column_32, + _column_33, + _column_10, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape3 signalPreKeyStores = Shape3( + source: i0.VersionedTable( + entityName: 'signal_pre_key_stores', + withoutRowId: false, + isStrict: false, + tableConstraints: [ + 'PRIMARY KEY(pre_key_id)', + ], + columns: [ + _column_34, + _column_35, + _column_10, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape4 signalSenderKeyStores = Shape4( + source: i0.VersionedTable( + entityName: 'signal_sender_key_stores', + withoutRowId: false, + isStrict: false, + tableConstraints: [ + 'PRIMARY KEY(sender_key_name)', + ], + columns: [ + _column_36, + _column_37, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape5 signalSessionStores = Shape5( + source: i0.VersionedTable( + entityName: 'signal_session_stores', + withoutRowId: false, + isStrict: false, + tableConstraints: [ + 'PRIMARY KEY(device_id, name)', + ], + columns: [ + _column_31, + _column_32, + _column_38, + _column_10, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape14 signalContactPreKeys = Shape14( + source: i0.VersionedTable( + entityName: 'signal_contact_pre_keys', + withoutRowId: false, + isStrict: false, + tableConstraints: [ + 'PRIMARY KEY(contact_id, pre_key_id)', + ], + columns: [ + _column_58, + _column_34, + _column_35, + _column_10, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape15 signalContactSignedPreKeys = Shape15( + source: i0.VersionedTable( + entityName: 'signal_contact_signed_pre_keys', + withoutRowId: false, + isStrict: false, + tableConstraints: [ + 'PRIMARY KEY(contact_id)', + ], + columns: [ + _column_58, + _column_59, + _column_60, + _column_61, + _column_10, + ], + attachedDatabase: database, + ), + alias: null); + late final Shape16 messageRetransmissions = Shape16( + source: i0.VersionedTable( + entityName: 'message_retransmissions', + withoutRowId: false, + isStrict: false, + tableConstraints: [], + columns: [ + _column_62, + _column_63, + _column_64, + _column_65, + _column_66, + _column_67, + ], + attachedDatabase: database, + ), + alias: null); +} + +class Shape16 extends i0.VersionedTable { + Shape16({required super.source, required super.alias}) : super.aliased(); + i1.GeneratedColumn get retransmissionId => + columnsByName['retransmission_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get contactId => + columnsByName['contact_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get messageId => + columnsByName['message_id']! as i1.GeneratedColumn; + i1.GeneratedColumn get plaintextContent => + columnsByName['plaintext_content']! as i1.GeneratedColumn; + i1.GeneratedColumn get pushData => + columnsByName['push_data']! as i1.GeneratedColumn; + i1.GeneratedColumn get acknowledgeByServerAt => + columnsByName['acknowledge_by_server_at']! + as i1.GeneratedColumn; +} + +i1.GeneratedColumn _column_62(String aliasedName) => + i1.GeneratedColumn('retransmission_id', aliasedName, false, + hasAutoIncrement: true, + type: i1.DriftSqlType.int, + defaultConstraints: + i1.GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); +i1.GeneratedColumn _column_63(String aliasedName) => + i1.GeneratedColumn('contact_id', aliasedName, false, + type: i1.DriftSqlType.int, + defaultConstraints: i1.GeneratedColumn.constraintIsAlways( + 'REFERENCES contacts (user_id) ON DELETE CASCADE')); +i1.GeneratedColumn _column_64(String aliasedName) => + i1.GeneratedColumn('message_id', aliasedName, true, + type: i1.DriftSqlType.int, + defaultConstraints: i1.GeneratedColumn.constraintIsAlways( + 'REFERENCES messages (message_id) ON DELETE CASCADE')); +i1.GeneratedColumn _column_65(String aliasedName) => + i1.GeneratedColumn('plaintext_content', aliasedName, false, + type: i1.DriftSqlType.blob); +i1.GeneratedColumn _column_66(String aliasedName) => + i1.GeneratedColumn('push_data', aliasedName, true, + type: i1.DriftSqlType.blob); +i1.GeneratedColumn _column_67(String aliasedName) => + i1.GeneratedColumn('acknowledge_by_server_at', aliasedName, true, + type: i1.DriftSqlType.dateTime); i0.MigrationStepWithVersion migrationSteps({ required Future Function(i1.Migrator m, Schema2 schema) from1To2, required Future Function(i1.Migrator m, Schema3 schema) from2To3, @@ -2202,6 +2475,7 @@ i0.MigrationStepWithVersion migrationSteps({ required Future Function(i1.Migrator m, Schema8 schema) from7To8, required Future Function(i1.Migrator m, Schema9 schema) from8To9, required Future Function(i1.Migrator m, Schema10 schema) from9To10, + required Future Function(i1.Migrator m, Schema11 schema) from10To11, }) { return (currentVersion, database) async { switch (currentVersion) { @@ -2250,6 +2524,11 @@ i0.MigrationStepWithVersion migrationSteps({ final migrator = i1.Migrator(database, schema); await from9To10(migrator, schema); return 10; + case 10: + final schema = Schema11(database: database); + final migrator = i1.Migrator(database, schema); + await from10To11(migrator, schema); + return 11; default: throw ArgumentError.value('Unknown migration from $currentVersion'); } @@ -2266,6 +2545,7 @@ i1.OnUpgrade stepByStep({ required Future Function(i1.Migrator m, Schema8 schema) from7To8, required Future Function(i1.Migrator m, Schema9 schema) from8To9, required Future Function(i1.Migrator m, Schema10 schema) from9To10, + required Future Function(i1.Migrator m, Schema11 schema) from10To11, }) => i0.VersionedSchema.stepByStepHelper( step: migrationSteps( @@ -2278,4 +2558,5 @@ i1.OnUpgrade stepByStep({ from7To8: from7To8, from8To9: from8To9, from9To10: from9To10, + from10To11: from10To11, )); diff --git a/test/drift/twonly_database/generated/schema.dart b/test/drift/twonly_database/generated/schema.dart index 76573e4..1d78a44 100644 --- a/test/drift/twonly_database/generated/schema.dart +++ b/test/drift/twonly_database/generated/schema.dart @@ -13,6 +13,7 @@ import 'schema_v7.dart' as v7; import 'schema_v8.dart' as v8; import 'schema_v9.dart' as v9; import 'schema_v10.dart' as v10; +import 'schema_v11.dart' as v11; class GeneratedHelper implements SchemaInstantiationHelper { @override @@ -38,10 +39,12 @@ class GeneratedHelper implements SchemaInstantiationHelper { return v9.DatabaseAtV9(db); case 10: return v10.DatabaseAtV10(db); + case 11: + return v11.DatabaseAtV11(db); default: throw MissingSchemaException(version, versions); } } - static const versions = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + static const versions = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; } diff --git a/test/drift/twonly_database/generated/schema_v11.dart b/test/drift/twonly_database/generated/schema_v11.dart index 0f282d5..0ab34f2 100644 --- a/test/drift/twonly_database/generated/schema_v11.dart +++ b/test/drift/twonly_database/generated/schema_v11.dart @@ -916,8 +916,8 @@ class Messages extends Table with TableInfo { 'contact_id', aliasedName, false, type: DriftSqlType.int, requiredDuringInsert: true, - defaultConstraints: GeneratedColumn.constraintIsAlways( - 'REFERENCES contacts (user_id) ON DELETE CASCADE')); + defaultConstraints: + GeneratedColumn.constraintIsAlways('REFERENCES contacts (user_id)')); late final GeneratedColumn messageId = GeneratedColumn( 'message_id', aliasedName, false, hasAutoIncrement: true, @@ -1955,10 +1955,7 @@ class MediaDownloads extends Table MediaDownloads(this.attachedDatabase, [this._alias]); late final GeneratedColumn messageId = GeneratedColumn( 'message_id', aliasedName, false, - type: DriftSqlType.int, - requiredDuringInsert: true, - defaultConstraints: GeneratedColumn.constraintIsAlways( - 'REFERENCES messages (message_id) ON DELETE CASCADE')); + type: DriftSqlType.int, requiredDuringInsert: true); late final GeneratedColumn downloadToken = GeneratedColumn( 'download_token', aliasedName, false, type: DriftSqlType.string, requiredDuringInsert: true); @@ -2975,10 +2972,7 @@ class SignalContactPreKeys extends Table SignalContactPreKeys(this.attachedDatabase, [this._alias]); late final GeneratedColumn contactId = GeneratedColumn( 'contact_id', aliasedName, false, - type: DriftSqlType.int, - requiredDuringInsert: true, - defaultConstraints: GeneratedColumn.constraintIsAlways( - 'REFERENCES contacts (user_id) ON DELETE CASCADE')); + type: DriftSqlType.int, requiredDuringInsert: true); late final GeneratedColumn preKeyId = GeneratedColumn( 'pre_key_id', aliasedName, false, type: DriftSqlType.int, requiredDuringInsert: true); @@ -3215,10 +3209,7 @@ class SignalContactSignedPreKeys extends Table SignalContactSignedPreKeys(this.attachedDatabase, [this._alias]); late final GeneratedColumn contactId = GeneratedColumn( 'contact_id', aliasedName, false, - type: DriftSqlType.int, - requiredDuringInsert: false, - defaultConstraints: GeneratedColumn.constraintIsAlways( - 'REFERENCES contacts (user_id) ON DELETE CASCADE')); + type: DriftSqlType.int, requiredDuringInsert: false); late final GeneratedColumn signedPreKeyId = GeneratedColumn( 'signed_pre_key_id', aliasedName, false, type: DriftSqlType.int, requiredDuringInsert: true); @@ -3487,6 +3478,332 @@ class SignalContactSignedPreKeysCompanion } } +class MessageRetransmissions extends Table + with TableInfo { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + MessageRetransmissions(this.attachedDatabase, [this._alias]); + late final GeneratedColumn retransmissionId = GeneratedColumn( + 'retransmission_id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + late final GeneratedColumn contactId = GeneratedColumn( + 'contact_id', aliasedName, false, + type: DriftSqlType.int, + requiredDuringInsert: true, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES contacts (user_id) ON DELETE CASCADE')); + late final GeneratedColumn messageId = GeneratedColumn( + 'message_id', aliasedName, true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'REFERENCES messages (message_id) ON DELETE CASCADE')); + late final GeneratedColumn plaintextContent = + GeneratedColumn('plaintext_content', aliasedName, false, + type: DriftSqlType.blob, requiredDuringInsert: true); + late final GeneratedColumn pushData = GeneratedColumn( + 'push_data', aliasedName, true, + type: DriftSqlType.blob, requiredDuringInsert: false); + late final GeneratedColumn acknowledgeByServerAt = + GeneratedColumn('acknowledge_by_server_at', aliasedName, true, + type: DriftSqlType.dateTime, requiredDuringInsert: false); + @override + List get $columns => [ + retransmissionId, + contactId, + messageId, + plaintextContent, + pushData, + acknowledgeByServerAt + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'message_retransmissions'; + @override + Set get $primaryKey => {retransmissionId}; + @override + MessageRetransmissionsData map(Map data, + {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return MessageRetransmissionsData( + retransmissionId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}retransmission_id'])!, + contactId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}contact_id'])!, + messageId: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}message_id']), + plaintextContent: attachedDatabase.typeMapping.read( + DriftSqlType.blob, data['${effectivePrefix}plaintext_content'])!, + pushData: attachedDatabase.typeMapping + .read(DriftSqlType.blob, data['${effectivePrefix}push_data']), + acknowledgeByServerAt: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}acknowledge_by_server_at']), + ); + } + + @override + MessageRetransmissions createAlias(String alias) { + return MessageRetransmissions(attachedDatabase, alias); + } +} + +class MessageRetransmissionsData extends DataClass + implements Insertable { + final int retransmissionId; + final int contactId; + final int? messageId; + final Uint8List plaintextContent; + final Uint8List? pushData; + final DateTime? acknowledgeByServerAt; + const MessageRetransmissionsData( + {required this.retransmissionId, + required this.contactId, + this.messageId, + required this.plaintextContent, + this.pushData, + this.acknowledgeByServerAt}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['retransmission_id'] = Variable(retransmissionId); + map['contact_id'] = Variable(contactId); + if (!nullToAbsent || messageId != null) { + map['message_id'] = Variable(messageId); + } + map['plaintext_content'] = Variable(plaintextContent); + if (!nullToAbsent || pushData != null) { + map['push_data'] = Variable(pushData); + } + if (!nullToAbsent || acknowledgeByServerAt != null) { + map['acknowledge_by_server_at'] = + Variable(acknowledgeByServerAt); + } + return map; + } + + MessageRetransmissionsCompanion toCompanion(bool nullToAbsent) { + return MessageRetransmissionsCompanion( + retransmissionId: Value(retransmissionId), + contactId: Value(contactId), + messageId: messageId == null && nullToAbsent + ? const Value.absent() + : Value(messageId), + plaintextContent: Value(plaintextContent), + pushData: pushData == null && nullToAbsent + ? const Value.absent() + : Value(pushData), + acknowledgeByServerAt: acknowledgeByServerAt == null && nullToAbsent + ? const Value.absent() + : Value(acknowledgeByServerAt), + ); + } + + factory MessageRetransmissionsData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return MessageRetransmissionsData( + retransmissionId: serializer.fromJson(json['retransmissionId']), + contactId: serializer.fromJson(json['contactId']), + messageId: serializer.fromJson(json['messageId']), + plaintextContent: + serializer.fromJson(json['plaintextContent']), + pushData: serializer.fromJson(json['pushData']), + acknowledgeByServerAt: + serializer.fromJson(json['acknowledgeByServerAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'retransmissionId': serializer.toJson(retransmissionId), + 'contactId': serializer.toJson(contactId), + 'messageId': serializer.toJson(messageId), + 'plaintextContent': serializer.toJson(plaintextContent), + 'pushData': serializer.toJson(pushData), + 'acknowledgeByServerAt': + serializer.toJson(acknowledgeByServerAt), + }; + } + + MessageRetransmissionsData copyWith( + {int? retransmissionId, + int? contactId, + Value messageId = const Value.absent(), + Uint8List? plaintextContent, + Value pushData = const Value.absent(), + Value acknowledgeByServerAt = const Value.absent()}) => + MessageRetransmissionsData( + retransmissionId: retransmissionId ?? this.retransmissionId, + contactId: contactId ?? this.contactId, + messageId: messageId.present ? messageId.value : this.messageId, + plaintextContent: plaintextContent ?? this.plaintextContent, + pushData: pushData.present ? pushData.value : this.pushData, + acknowledgeByServerAt: acknowledgeByServerAt.present + ? acknowledgeByServerAt.value + : this.acknowledgeByServerAt, + ); + MessageRetransmissionsData copyWithCompanion( + MessageRetransmissionsCompanion data) { + return MessageRetransmissionsData( + retransmissionId: data.retransmissionId.present + ? data.retransmissionId.value + : this.retransmissionId, + contactId: data.contactId.present ? data.contactId.value : this.contactId, + messageId: data.messageId.present ? data.messageId.value : this.messageId, + plaintextContent: data.plaintextContent.present + ? data.plaintextContent.value + : this.plaintextContent, + pushData: data.pushData.present ? data.pushData.value : this.pushData, + acknowledgeByServerAt: data.acknowledgeByServerAt.present + ? data.acknowledgeByServerAt.value + : this.acknowledgeByServerAt, + ); + } + + @override + String toString() { + return (StringBuffer('MessageRetransmissionsData(') + ..write('retransmissionId: $retransmissionId, ') + ..write('contactId: $contactId, ') + ..write('messageId: $messageId, ') + ..write('plaintextContent: $plaintextContent, ') + ..write('pushData: $pushData, ') + ..write('acknowledgeByServerAt: $acknowledgeByServerAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + retransmissionId, + contactId, + messageId, + $driftBlobEquality.hash(plaintextContent), + $driftBlobEquality.hash(pushData), + acknowledgeByServerAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is MessageRetransmissionsData && + other.retransmissionId == this.retransmissionId && + other.contactId == this.contactId && + other.messageId == this.messageId && + $driftBlobEquality.equals( + other.plaintextContent, this.plaintextContent) && + $driftBlobEquality.equals(other.pushData, this.pushData) && + other.acknowledgeByServerAt == this.acknowledgeByServerAt); +} + +class MessageRetransmissionsCompanion + extends UpdateCompanion { + final Value retransmissionId; + final Value contactId; + final Value messageId; + final Value plaintextContent; + final Value pushData; + final Value acknowledgeByServerAt; + const MessageRetransmissionsCompanion({ + this.retransmissionId = const Value.absent(), + this.contactId = const Value.absent(), + this.messageId = const Value.absent(), + this.plaintextContent = const Value.absent(), + this.pushData = const Value.absent(), + this.acknowledgeByServerAt = const Value.absent(), + }); + MessageRetransmissionsCompanion.insert({ + this.retransmissionId = const Value.absent(), + required int contactId, + this.messageId = const Value.absent(), + required Uint8List plaintextContent, + this.pushData = const Value.absent(), + this.acknowledgeByServerAt = const Value.absent(), + }) : contactId = Value(contactId), + plaintextContent = Value(plaintextContent); + static Insertable custom({ + Expression? retransmissionId, + Expression? contactId, + Expression? messageId, + Expression? plaintextContent, + Expression? pushData, + Expression? acknowledgeByServerAt, + }) { + return RawValuesInsertable({ + if (retransmissionId != null) 'retransmission_id': retransmissionId, + if (contactId != null) 'contact_id': contactId, + if (messageId != null) 'message_id': messageId, + if (plaintextContent != null) 'plaintext_content': plaintextContent, + if (pushData != null) 'push_data': pushData, + if (acknowledgeByServerAt != null) + 'acknowledge_by_server_at': acknowledgeByServerAt, + }); + } + + MessageRetransmissionsCompanion copyWith( + {Value? retransmissionId, + Value? contactId, + Value? messageId, + Value? plaintextContent, + Value? pushData, + Value? acknowledgeByServerAt}) { + return MessageRetransmissionsCompanion( + retransmissionId: retransmissionId ?? this.retransmissionId, + contactId: contactId ?? this.contactId, + messageId: messageId ?? this.messageId, + plaintextContent: plaintextContent ?? this.plaintextContent, + pushData: pushData ?? this.pushData, + acknowledgeByServerAt: + acknowledgeByServerAt ?? this.acknowledgeByServerAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (retransmissionId.present) { + map['retransmission_id'] = Variable(retransmissionId.value); + } + if (contactId.present) { + map['contact_id'] = Variable(contactId.value); + } + if (messageId.present) { + map['message_id'] = Variable(messageId.value); + } + if (plaintextContent.present) { + map['plaintext_content'] = Variable(plaintextContent.value); + } + if (pushData.present) { + map['push_data'] = Variable(pushData.value); + } + if (acknowledgeByServerAt.present) { + map['acknowledge_by_server_at'] = + Variable(acknowledgeByServerAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('MessageRetransmissionsCompanion(') + ..write('retransmissionId: $retransmissionId, ') + ..write('contactId: $contactId, ') + ..write('messageId: $messageId, ') + ..write('plaintextContent: $plaintextContent, ') + ..write('pushData: $pushData, ') + ..write('acknowledgeByServerAt: $acknowledgeByServerAt') + ..write(')')) + .toString(); + } +} + class DatabaseAtV11 extends GeneratedDatabase { DatabaseAtV11(QueryExecutor e) : super(e); late final Contacts contacts = Contacts(this); @@ -3504,6 +3821,8 @@ class DatabaseAtV11 extends GeneratedDatabase { SignalContactPreKeys(this); late final SignalContactSignedPreKeys signalContactSignedPreKeys = SignalContactSignedPreKeys(this); + late final MessageRetransmissions messageRetransmissions = + MessageRetransmissions(this); @override Iterable> get allTables => allSchemaEntities.whereType>(); @@ -3518,7 +3837,8 @@ class DatabaseAtV11 extends GeneratedDatabase { signalSenderKeyStores, signalSessionStores, signalContactPreKeys, - signalContactSignedPreKeys + signalContactSignedPreKeys, + messageRetransmissions ]; @override int get schemaVersion => 11;