MVP #141

Merged
flixcoo merged 705 commits from development into main 2026-01-09 12:55:50 +00:00
3 changed files with 28 additions and 11 deletions
Showing only changes of commit a61818dd77 - Show all commits

View File

@@ -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].

View File

@@ -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;

View File

@@ -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