getAllGames returnt nicht alle Attribute von der game Klasse #45
@@ -15,11 +15,23 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
Future<List<Game>> getAllGames() async {
|
Future<List<Game>> getAllGames() async {
|
||||||
final query = select(gameTable);
|
final query = select(gameTable);
|
||||||
final result = await query.get();
|
final result = await query.get();
|
||||||
return result
|
|
||||||
.map(
|
return Future.wait(
|
||||||
(row) => Game(id: row.id, name: row.name, createdAt: row.createdAt),
|
result.map((row) async {
|
||||||
)
|
final group = await db.groupGameDao.getGroupByGameId(gameId: row.id);
|
||||||
.toList();
|
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].
|
/// Retrieves a [Game] by its [gameId].
|
||||||
|
|||||||
@@ -23,10 +23,15 @@ class GroupGameDao extends DatabaseAccessor<AppDatabase>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves the [Group] associated with the given [gameId].
|
/// 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(
|
final result = await (select(
|
||||||
groupGameTable,
|
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);
|
final group = await db.groupDao.getGroupById(groupId: result.groupId);
|
||||||
return group;
|
return group;
|
||||||
|
|||||||
@@ -23,19 +23,19 @@ class PlayerGameDao extends DatabaseAccessor<AppDatabase>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves a list of [Player]s associated with the given [gameId].
|
/// Retrieves a list of [Player]s associated with the given [gameId].
|
||||||
/// Returns an empty list if no players are found.
|
/// Returns null if no players are found.
|
||||||
Future<List<Player>> getPlayersByGameId({required String gameId}) async {
|
Future<List<Player>?> getPlayersByGameId({required String gameId}) async {
|
||||||
final result = await (select(
|
final result = await (select(
|
||||||
playerGameTable,
|
playerGameTable,
|
||||||
)..where((p) => p.gameId.equals(gameId))).get();
|
)..where((p) => p.gameId.equals(gameId))).get();
|
||||||
|
|
||||||
if (result.isEmpty) return <Player>[];
|
if (result.isEmpty) return null;
|
||||||
|
|
||||||
final futures = result.map(
|
final futures = result.map(
|
||||||
(row) => db.playerDao.getPlayerById(playerId: row.playerId),
|
(row) => db.playerDao.getPlayerById(playerId: row.playerId),
|
||||||
);
|
);
|
||||||
final players = await Future.wait(futures);
|
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
|
/// Associates a player with a game by inserting a record into the
|
||||||
|
|||||||
Reference in New Issue
Block a user