From ca40ae668dc2f4e5a32d1c0b3e0d9c950d8280d3 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Wed, 12 Nov 2025 13:11:48 +0100 Subject: [PATCH] Updated methods with named parameters --- lib/data/dao/game_dao.dart | 20 +++++++++-------- lib/data/dao/group_dao.dart | 15 ++++++++----- lib/data/dao/group_game_dao.dart | 6 ++--- lib/data/dao/player_dao.dart | 35 +++++++++++++++++++----------- lib/data/dao/player_game_dao.dart | 11 ++++++---- lib/data/dao/player_group_dao.dart | 14 ++++++++---- 6 files changed, 62 insertions(+), 39 deletions(-) diff --git a/lib/data/dao/game_dao.dart b/lib/data/dao/game_dao.dart index ba9c7df..775c509 100644 --- a/lib/data/dao/game_dao.dart +++ b/lib/data/dao/game_dao.dart @@ -19,17 +19,17 @@ class GameDao extends DatabaseAccessor with _$GameDaoMixin { } /// Retrieves a [Game] by its [gameId]. - Future getGameById(String gameId) async { + Future getGameById({required String gameId}) async { final query = select(gameTable)..where((g) => g.id.equals(gameId)); final result = await query.getSingle(); List? players; - if (await db.playerGameDao.hasGamePlayers(gameId)) { - players = await db.playerGameDao.getPlayersByGameId(gameId); + if (await db.playerGameDao.hasGamePlayers(gameId: gameId)) { + players = await db.playerGameDao.getPlayersByGameId(gameId: gameId); } Group? group; - if (await db.groupGameDao.hasGameGroup(gameId)) { - group = await db.groupGameDao.getGroupByGameId(gameId); + if (await db.groupGameDao.hasGameGroup(gameId: gameId)) { + group = await db.groupGameDao.getGroupByGameId(gameId: gameId); } return Game( @@ -41,14 +41,16 @@ class GameDao extends DatabaseAccessor with _$GameDaoMixin { ); } - Future addGame(Game game) async { + /// Adds a new [Game] to the database. + /// Also adds associated players and group if they exist. + Future addGame({required Game game}) async { await db.transaction(() async { for (final p in game.players ?? []) { - await db.playerDao.addPlayer(p); - await db.playerGameDao.addPlayerToGame(game.id, p.id); + await db.playerDao.addPlayer(player: p); + await db.playerGameDao.addPlayerToGame(gameId: game.id, playerId: p.id); } if (game.group != null) { - await db.groupDao.addGroup(game.group!); + await db.groupDao.addGroup(group: game.group!); await db.groupGameDao.addGroupToGame(game.id, game.group!.id); } await into(gameTable).insert( diff --git a/lib/data/dao/group_dao.dart b/lib/data/dao/group_dao.dart index ace60c4..d449326 100644 --- a/lib/data/dao/group_dao.dart +++ b/lib/data/dao/group_dao.dart @@ -20,12 +20,12 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { } /// Retrieves a [Group] by its [groupId], including its members. - Future getGroupById(String groupId) async { + Future getGroupById({required String groupId}) async { final query = select(groupTable)..where((g) => g.id.equals(groupId)); final result = await query.getSingle(); List members = await db.playerGroupDao.getPlayersOfGroupById( - groupId, + groupId: groupId, ); return Group(id: result.id, name: result.name, members: members); @@ -33,7 +33,7 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { /// Adds a new group with the given [id] and [name] to the database. /// This method also adds the group's members to the [PlayerGroupTable]. - Future addGroup(Group group) async { + Future addGroup({required Group group}) async { await db.transaction(() async { await into( groupTable, @@ -56,15 +56,18 @@ class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { /// Deletes the group with the given [id] from the database. /// Returns `true` if more than 0 rows were affected, otherwise `false`. - Future deleteGroup(String id) async { - final query = (delete(groupTable)..where((g) => g.id.equals(id))); + Future deleteGroup({required String groupId}) async { + final query = (delete(groupTable)..where((g) => g.id.equals(groupId))); final rowsAffected = await query.go(); return rowsAffected > 0; } /// Updates the name of the group with the given [id] to [newName]. /// Returns `true` if more than 0 rows were affected, otherwise `false`. - Future updateGroupname(String id, String newName) async { + Future updateGroupname({ + required String id, + required String newName, + }) async { final rowsAffected = await (update(groupTable)..where((g) => g.id.equals(id))).write( GroupTableCompanion(name: Value(newName)), diff --git a/lib/data/dao/group_game_dao.dart b/lib/data/dao/group_game_dao.dart index b29db1c..88b8fad 100644 --- a/lib/data/dao/group_game_dao.dart +++ b/lib/data/dao/group_game_dao.dart @@ -12,7 +12,7 @@ class GroupGameDao extends DatabaseAccessor /// Checks if there is a group associated with the given [gameId]. /// Returns `true` if there is a group, otherwise `false`. - Future hasGameGroup(String gameId) async { + Future hasGameGroup({required String gameId}) async { final count = await (selectOnly(groupGameTable) ..where(groupGameTable.gameId.equals(gameId)) @@ -22,12 +22,12 @@ class GroupGameDao extends DatabaseAccessor return (count ?? 0) > 0; } - Future getGroupByGameId(String gameId) async { + Future getGroupByGameId({required String gameId}) async { final result = await (select( groupGameTable, )..where((g) => g.gameId.equals(gameId))).getSingle(); - final group = await db.groupDao.getGroupById(result.groupId); + final group = await db.groupDao.getGroupById(groupId: result.groupId); return group; } diff --git a/lib/data/dao/player_dao.dart b/lib/data/dao/player_dao.dart index 2d3c0ab..01e7163 100644 --- a/lib/data/dao/player_dao.dart +++ b/lib/data/dao/player_dao.dart @@ -17,38 +17,47 @@ class PlayerDao extends DatabaseAccessor with _$PlayerDaoMixin { } /// Retrieves a [Player] by their [id]. - Future getPlayerById(String id) async { - final query = select(playerTable)..where((p) => p.id.equals(id)); + Future getPlayerById({required String playerId}) async { + final query = select(playerTable)..where((p) => p.id.equals(playerId)); final result = await query.getSingle(); return Player(id: result.id, name: result.name); } /// Adds a new [player] to the database. - Future addPlayer(Player player) async { - await into( - playerTable, - ).insert(PlayerTableCompanion.insert(id: player.id, name: player.name)); + /// If a player with the same ID already exists, updates their name to + /// the new one. + Future addPlayer({required Player player}) async { + if (!await playerExists(playerId: player.id)) { + await into( + playerTable, + ).insert(PlayerTableCompanion.insert(id: player.id, name: player.name)); + } else { + await updatePlayername(playerId: player.id, newName: player.name); + } } /// Deletes the player with the given [id] from the database. /// Returns `true` if the player was deleted, `false` if the player did not exist. - Future deletePlayer(String id) async { - final query = delete(playerTable)..where((p) => p.id.equals(id)); + Future deletePlayer({required String playerId}) async { + final query = delete(playerTable)..where((p) => p.id.equals(playerId)); final rowsAffected = await query.go(); return rowsAffected > 0; } /// Checks if a player with the given [id] exists in the database. /// Returns `true` if the player exists, `false` otherwise. - Future playerExists(String id) async { - final query = select(playerTable)..where((p) => p.id.equals(id)); + Future playerExists({required String playerId}) async { + final query = select(playerTable)..where((p) => p.id.equals(playerId)); final result = await query.getSingleOrNull(); return result != null; } - /// Updates the name of the player with the given [id] to [newName]. - Future updatePlayername(String id, String newName) async { - await (update(playerTable)..where((p) => p.id.equals(id))).write( + /// Updates the name of the player with the given [playerId] to [newName]. + Future updatePlayername({ + required String playerId, + required String newName, + }) async { + await (update(playerTable)..where((p) => p.id.equals(playerId))).write( PlayerTableCompanion(name: Value(newName)), ); } diff --git a/lib/data/dao/player_game_dao.dart b/lib/data/dao/player_game_dao.dart index e597462..333dc28 100644 --- a/lib/data/dao/player_game_dao.dart +++ b/lib/data/dao/player_game_dao.dart @@ -12,7 +12,7 @@ class PlayerGameDao extends DatabaseAccessor /// Checks if there are any players associated with the given [gameId]. /// Returns `true` if there are players, otherwise `false`. - Future hasGamePlayers(String gameId) async { + Future hasGamePlayers({required String gameId}) async { final count = await (selectOnly(playerGameTable) ..where(playerGameTable.gameId.equals(gameId)) @@ -24,7 +24,7 @@ class PlayerGameDao extends DatabaseAccessor /// Retrieves a list of [Player]s associated with the given [gameId]. /// Returns an empty list if no players are found. - Future> getPlayersByGameId(String gameId) async { + Future> getPlayersByGameId({required String gameId}) async { final result = await (select( playerGameTable, )..where((p) => p.gameId.equals(gameId))).get(); @@ -32,7 +32,7 @@ class PlayerGameDao extends DatabaseAccessor if (result.isEmpty) return []; final futures = result.map( - (row) => db.playerDao.getPlayerById(row.playerId), + (row) => db.playerDao.getPlayerById(playerId: row.playerId), ); final players = await Future.wait(futures); return players.whereType().toList(); @@ -40,7 +40,10 @@ class PlayerGameDao extends DatabaseAccessor /// Associates a player with a game by inserting a record into the /// [PlayerGameTable]. - Future addPlayerToGame(String gameId, String playerId) async { + Future addPlayerToGame({ + required String gameId, + required String playerId, + }) async { await into(playerGameTable).insert( PlayerGameTableCompanion.insert(playerId: playerId, gameId: gameId), ); diff --git a/lib/data/dao/player_group_dao.dart b/lib/data/dao/player_group_dao.dart index e51c325..5b2a095 100644 --- a/lib/data/dao/player_group_dao.dart +++ b/lib/data/dao/player_group_dao.dart @@ -11,7 +11,7 @@ class PlayerGroupDao extends DatabaseAccessor PlayerGroupDao(super.db); /// Retrieves all players belonging to a specific group by [groupId]. - Future> getPlayersOfGroupById(String groupId) async { + Future> getPlayersOfGroupById({required String groupId}) async { final query = select(playerGroupTable) ..where((pG) => pG.groupId.equals(groupId)); final result = await query.get(); @@ -19,7 +19,7 @@ class PlayerGroupDao extends DatabaseAccessor List groupMembers = []; for (var entry in result) { - final player = await db.playerDao.getPlayerById(entry.playerId); + final player = await db.playerDao.getPlayerById(playerId: entry.playerId); groupMembers.add(player); } @@ -28,7 +28,10 @@ class PlayerGroupDao extends DatabaseAccessor /// Removes a player from a group based on [playerId] and [groupId]. /// Returns `true` if more than 0 rows were affected, otherwise `false`. - Future removePlayerFromGroup(String playerId, String groupId) async { + Future removePlayerFromGroup({ + required String playerId, + required String groupId, + }) async { final query = delete(playerGroupTable) ..where((p) => p.playerId.equals(playerId) & p.groupId.equals(groupId)); final rowsAffected = await query.go(); @@ -36,7 +39,10 @@ class PlayerGroupDao extends DatabaseAccessor } /// Adds a player to a group with the given [playerId] and [groupId]. - Future addPlayerToGroup(String playerId, String groupId) async { + Future addPlayerToGroup({ + required String playerId, + required String groupId, + }) async { await into(playerGroupTable).insert( PlayerGroupTableCompanion.insert(playerId: playerId, groupId: groupId), );