diff --git a/lib/data/dao/group_dao.dart b/lib/data/dao/group_dao.dart index 9802203..98c602a 100644 --- a/lib/data/dao/group_dao.dart +++ b/lib/data/dao/group_dao.dart @@ -95,6 +95,8 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { } // Insert unique groups in batch + // Using insertOrIgnore to avoid triggering cascade deletes on + // player_group associations when groups already exist await db.batch( (b) => b.insertAll( groupTable, @@ -107,7 +109,7 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { ), ) .toList(), - mode: InsertMode.insertOrReplace, + mode: InsertMode.insertOrIgnore, ), ); @@ -120,6 +122,8 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { } if (uniquePlayers.isNotEmpty) { + // Using insertOrIgnore to avoid triggering cascade deletes on + // player_group associations when players already exist await db.batch( (b) => b.insertAll( db.playerTable, @@ -132,7 +136,7 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { ), ) .toList(), - mode: InsertMode.insertOrReplace, + mode: InsertMode.insertOrIgnore, ), ); } diff --git a/lib/data/dao/match_dao.dart b/lib/data/dao/match_dao.dart index b56a38b..160686a 100644 --- a/lib/data/dao/match_dao.dart +++ b/lib/data/dao/match_dao.dart @@ -124,6 +124,8 @@ class MatchDao extends DatabaseAccessor with _$MatchDaoMixin { ); // Add all groups of the matches in batch + // Using insertOrIgnore to avoid overwriting existing groups (which would + // trigger cascade deletes on player_group associations) await db.batch( (b) => b.insertAll( db.groupTable, @@ -137,7 +139,7 @@ class MatchDao extends DatabaseAccessor with _$MatchDaoMixin { ), ) .toList(), - mode: InsertMode.insertOrReplace, + mode: InsertMode.insertOrIgnore, ), ); @@ -158,6 +160,8 @@ class MatchDao extends DatabaseAccessor with _$MatchDaoMixin { } if (uniquePlayers.isNotEmpty) { + // Using insertOrIgnore to avoid triggering cascade deletes on + // player_group/player_match associations when players already exist await db.batch( (b) => b.insertAll( db.playerTable, @@ -170,7 +174,7 @@ class MatchDao extends DatabaseAccessor with _$MatchDaoMixin { ), ) .toList(), - mode: InsertMode.insertOrReplace, + mode: InsertMode.insertOrIgnore, ), ); } diff --git a/lib/data/dao/player_dao.dart b/lib/data/dao/player_dao.dart index 8a58504..c8db800 100644 --- a/lib/data/dao/player_dao.dart +++ b/lib/data/dao/player_dao.dart @@ -50,6 +50,8 @@ class PlayerDao extends DatabaseAccessor with _$PlayerDaoMixin { } /// Adds multiple [players] to the database in a batch operation. + /// Uses insertOrIgnore to avoid triggering cascade deletes on + /// player_group associations when players already exist. Future addPlayersAsList({required List players}) async { if (players.isEmpty) return false; @@ -65,7 +67,7 @@ class PlayerDao extends DatabaseAccessor with _$PlayerDaoMixin { ), ) .toList(), - mode: InsertMode.insertOrReplace, + mode: InsertMode.insertOrIgnore, ), );