Fixed error in getAllGames method

This commit is contained in:
2025-11-20 22:40:56 +01:00
parent e364e15d0a
commit a61818dd77
3 changed files with 28 additions and 11 deletions

View File

@@ -15,11 +15,23 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
Future<List<Game>> getAllGames() async {
final query = select(gameTable);
final result = await query.get();
return result
.map(
(row) => Game(id: row.id, name: row.name, createdAt: row.createdAt),
)
.toList();
return Future.wait(
result.map((row) async {
final group = await db.groupGameDao.getGroupByGameId(gameId: row.id);
final player = await db.playerGameDao.getPlayersByGameId(
gameId: row.id,
);
return Game(
id: row.id,
name: row.name,
group: group,
players: player,
createdAt: row.createdAt,
winner: row.winnerId,
);
}),
);
}
/// Retrieves a [Game] by its [gameId].

View File

@@ -23,10 +23,15 @@ class GroupGameDao extends DatabaseAccessor<AppDatabase>
}
/// Retrieves the [Group] associated with the given [gameId].
Future<Group> getGroupByGameId({required String gameId}) async {
/// Returns `null` if no group is found.
Future<Group?> getGroupByGameId({required String gameId}) async {
final result = await (select(
groupGameTable,
)..where((g) => g.gameId.equals(gameId))).getSingle();
)..where((g) => g.gameId.equals(gameId))).getSingleOrNull();
if (result == null) {
return null;
}
final group = await db.groupDao.getGroupById(groupId: result.groupId);
return group;

View File

@@ -23,19 +23,19 @@ class PlayerGameDao extends DatabaseAccessor<AppDatabase>
}
/// Retrieves a list of [Player]s associated with the given [gameId].
/// Returns an empty list if no players are found.
Future<List<Player>> getPlayersByGameId({required String gameId}) async {
/// Returns null if no players are found.
Future<List<Player>?> getPlayersByGameId({required String gameId}) async {
final result = await (select(
playerGameTable,
)..where((p) => p.gameId.equals(gameId))).get();
if (result.isEmpty) return <Player>[];
if (result.isEmpty) return null;
final futures = result.map(
(row) => db.playerDao.getPlayerById(playerId: row.playerId),
);
final players = await Future.wait(futures);
return players.whereType<Player>().toList();
return players;
}
/// Associates a player with a game by inserting a record into the