From a304d9adf78bb41a53943e67e5e5aff9402fcdf6 Mon Sep 17 00:00:00 2001 From: Mathis Kirchner Date: Mon, 9 Mar 2026 21:13:08 +0100 Subject: [PATCH] change getGroupMatches --- lib/data/dao/group_dao.dart | 29 ++++++++++++++++++++++++++--- lib/data/dao/group_dao.g.dart | 2 ++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/data/dao/group_dao.dart b/lib/data/dao/group_dao.dart index 13d1940..8891f1f 100644 --- a/lib/data/dao/group_dao.dart +++ b/lib/data/dao/group_dao.dart @@ -1,6 +1,7 @@ import 'package:drift/drift.dart'; import 'package:tallee/data/db/database.dart'; import 'package:tallee/data/db/tables/group_table.dart'; +import 'package:tallee/data/db/tables/match_table.dart'; import 'package:tallee/data/db/tables/player_group_table.dart'; import 'package:tallee/data/dto/group.dart'; import 'package:tallee/data/dto/match.dart'; @@ -8,7 +9,7 @@ import 'package:tallee/data/dto/player.dart'; part 'group_dao.g.dart'; -@DriftAccessor(tables: [GroupTable, PlayerGroupTable]) +@DriftAccessor(tables: [GroupTable, PlayerGroupTable, MatchTable]) class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { GroupDao(super.db); @@ -173,9 +174,31 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { } /// Retrieves all matches associated with the given [groupId]. + /// Queries the database directly, filtering by [groupId]. Future> getGroupMatches({required String groupId}) async { - final matches = await db.matchDao.getAllMatches(); - return matches.where((match) => match.group?.id == groupId).toList(); + final query = select(matchTable)..where((m) => m.groupId.equals(groupId)); + final rows = await query.get(); + + return Future.wait( + rows.map((row) async { + final game = await db.gameDao.getGameById(gameId: row.gameId); + final group = await db.groupDao.getGroupById(groupId: groupId); + final players = + await db.playerMatchDao.getPlayersOfMatch(matchId: row.id) ?? []; + final winner = await db.matchDao.getWinner(matchId: row.id); + return Match( + id: row.id, + name: row.name ?? '', + game: game, + group: group, + players: players, + notes: row.notes ?? '', + createdAt: row.createdAt, + endedAt: row.endedAt, + winner: winner, + ); + }), + ); } /// Deletes the group with the given [id] from the database. diff --git a/lib/data/dao/group_dao.g.dart b/lib/data/dao/group_dao.g.dart index b9534b4..37a5586 100644 --- a/lib/data/dao/group_dao.g.dart +++ b/lib/data/dao/group_dao.g.dart @@ -8,4 +8,6 @@ mixin _$GroupDaoMixin on DatabaseAccessor { $PlayerTableTable get playerTable => attachedDatabase.playerTable; $PlayerGroupTableTable get playerGroupTable => attachedDatabase.playerGroupTable; + $GameTableTable get gameTable => attachedDatabase.gameTable; + $MatchTableTable get matchTable => attachedDatabase.matchTable; }