From 1dc62fce5f16425020aa3644672a2b4025c1047e Mon Sep 17 00:00:00 2001 From: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> Date: Tue, 22 Jul 2025 01:50:41 +0530 Subject: [PATCH] fix: remove foreign constraint on stack.primaryAssetId (#20052) * fix: remove foreign constraint in stack.primaryAssetId * fix migration --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> --- .../drift_schemas/main/drift_schema_v3.json | Bin 0 -> 30478 bytes .../infrastructure/entities/stack.entity.dart | 3 +-- .../entities/stack.entity.drift.dart | Bin 27587 -> 22868 bytes .../repositories/db.repository.dart | 10 +++++++--- .../repositories/db.repository.steps.dart | Bin 39147 -> 48480 bytes .../repositories/remote_asset.repository.dart | 2 +- mobile/test/drift/main/generated/schema.dart | Bin 634 -> 718 bytes .../test/drift/main/generated/schema_v3.dart | Bin 0 -> 192301 bytes 8 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 mobile/drift_schemas/main/drift_schema_v3.json create mode 100644 mobile/test/drift/main/generated/schema_v3.dart diff --git a/mobile/drift_schemas/main/drift_schema_v3.json b/mobile/drift_schemas/main/drift_schema_v3.json new file mode 100644 index 0000000000000000000000000000000000000000..1acfbaf4932e0fa3fc82a83d4e4faa39d984751a GIT binary patch literal 30478 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 text().references(UserEntity, #id, onDelete: KeyAction.cascade)(); - TextColumn get primaryAssetId => text().references(RemoteAssetEntity, #id)(); + TextColumn get primaryAssetId => text()(); @override Set get primaryKey => {id}; diff --git a/mobile/lib/infrastructure/entities/stack.entity.drift.dart b/mobile/lib/infrastructure/entities/stack.entity.drift.dart index c0d000e02afd800cd7fd509a6807a627b5ca38eb..df0390aea01942808e481f97d795c59cafa6d504 100644 GIT binary patch delta 217 zcmX?no$<;h#tjb{H#;$1VcR^5_XX4B_xu8rU-I$r6%=LWCKgpX78j?Mc&1EVD5X1j zk-XSsCn>qjIRd+xCyOgfZ`P4`3DUqZxj~9cD!8O5GcVmvAw9K30jFlO&7#t)nKz3o z?`4{NK}BeCfeJR8&@A7)LG>!c!oRu~88<)H?_l5DY<`M)vxV(urcDlh?2}h<3r)^; Px1IdLQDL*MN0~AJP{LA& delta 1477 zcmc&!O=uHA7-f^qrnc)gcDI}DX1AUAmu&h&l{TnoF^XWQXqBRfU`(47R+6Soaw*l8 z-bJYIB3|_3rBJEPQ4qva1rLFuD1zus6qVAmxEYKjZ7MnGTn2XDH{W}2-hOLOxEF7@ zm5UoEc4y zWzr-umAA9W{0uvYr`X4^Q(0aRc@3ZVSa{p=p>U|C`%%wRte;jP2qzmadgn1QFEqD0 zU8-4PQP>BM+=^#HFQx`}VMEZh=x=I-Yyuze^dsuM(sU%q#WOoYQ-uHMdv}L}g*}lIpg| zEVz)2FV=Nzw5YgjNw}!AVLhl|CDM#(%kOjMLd`_O^T9bQfZz*)N`;|+s!=85ajd)usZ|X2aZtxrq9|(f<^DqaR5FChOV!)?YkH$or4P6qp NQ&z~LZwF`h`~ssy=jQ+b diff --git a/mobile/lib/infrastructure/repositories/db.repository.dart b/mobile/lib/infrastructure/repositories/db.repository.dart index 0a763c91c..7562cf6ff 100644 --- a/mobile/lib/infrastructure/repositories/db.repository.dart +++ b/mobile/lib/infrastructure/repositories/db.repository.dart @@ -72,7 +72,7 @@ class Drift extends $Drift implements IDatabaseRepository { ); @override - int get schemaVersion => 2; + int get schemaVersion => 3; @override MigrationStrategy get migration => MigrationStrategy( @@ -84,12 +84,16 @@ class Drift extends $Drift implements IDatabaseRepository { from: from, to: to, steps: migrationSteps( - from1To2: (m, _) async { - for (final entity in allSchemaEntities) { + from1To2: (m, v2) async { + for (final entity in v2.entities) { await m.drop(entity); await m.create(entity); } }, + from2To3: (m, v3) async { + // Removed foreign key constraint on stack.primaryAssetId + await m.alterTable(TableMigration(v3.stackEntity)); + }, ), ); diff --git a/mobile/lib/infrastructure/repositories/db.repository.steps.dart b/mobile/lib/infrastructure/repositories/db.repository.steps.dart index 76e5df76d02b49288433e1c6b7505a2670f2c883..a0703c3714129ab682cdedada113f870901b633a 100644 GIT binary patch delta 226 zcmaF8k?FxNrVU2ZM7Yv2^Ad9ul5-M^ixq;CGg5OCjVCkuiB5K46l64>9K@*0XuP?B z(VC0N+;p;_V8CWxo&xd7+oF^~{EIFYlchbqC+knEnrt+~OvqTF7;J*3LRwLNu2D$7 z@#f{zcp24_6N^(7jI6j6pa5bgM6H4?+*+0C2`nH@lRKs>1MOZj{Q?eCCs)nLl~aIQ PVg+aEfUVHfwB`Z;we3h5 delta 31 pcmV+)0O0@N`U2~*00H4t)Rs diff --git a/mobile/lib/infrastructure/repositories/remote_asset.repository.dart b/mobile/lib/infrastructure/repositories/remote_asset.repository.dart index 28c229b46..52cfe2e7c 100644 --- a/mobile/lib/infrastructure/repositories/remote_asset.repository.dart +++ b/mobile/lib/infrastructure/repositories/remote_asset.repository.dart @@ -193,7 +193,7 @@ class RemoteAssetRepository extends DriftDatabaseRepository { Future stack(String userId, StackResponse stack) { return _db.transaction(() async { final stackIds = await _db.managers.stackEntity - .filter((row) => row.primaryAssetId.id.isIn(stack.assetIds)) + .filter((row) => row.primaryAssetId.isIn(stack.assetIds)) .map((row) => row.id) .get(); diff --git a/mobile/test/drift/main/generated/schema.dart b/mobile/test/drift/main/generated/schema.dart index b2b7404b5ad559dcd0cc609cee2c30d151ed08c1..209e70d78870329052c366f705c4d02422e59e5a 100644 GIT binary patch delta 92 zcmeyxa*lPv2ieTrg8ZTq1@+?OjMUu3_%dU?l*FPEb%n%Yg)-xf??f5Zk`s$l6^yO8 o6ri9ewWPEt4=AhWl30?M1eA3w2{WGjow1HXN5MGOnyZ!z0Oai+H~;_u delta 21 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 F{r^NkaN_^~ literal 0 HcmV?d00001