Refactoring
This commit is contained in:
@@ -77,8 +77,8 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
/// Returns `true` if the game exists, `false` otherwise.
|
/// Returns `true` if the game exists, `false` otherwise.
|
||||||
Future<bool> gameExists({required String gameId}) async {
|
Future<bool> gameExists({required String gameId}) async {
|
||||||
final query = select(gameTable)..where((g) => g.id.equals(gameId));
|
final query = select(gameTable)..where((g) => g.id.equals(gameId));
|
||||||
final result = await query.getSingleOrNull();
|
final row = await query.getSingleOrNull();
|
||||||
return result != null;
|
return row != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves all games from the database.
|
/// Retrieves all games from the database.
|
||||||
@@ -103,15 +103,15 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
/// Retrieves a [Game] by its [gameId].
|
/// Retrieves a [Game] by its [gameId].
|
||||||
Future<Game> getGameById({required String gameId}) async {
|
Future<Game> getGameById({required String gameId}) async {
|
||||||
final query = select(gameTable)..where((g) => g.id.equals(gameId));
|
final query = select(gameTable)..where((g) => g.id.equals(gameId));
|
||||||
final result = await query.getSingle();
|
final row = await query.getSingle();
|
||||||
return Game(
|
return Game(
|
||||||
id: result.id,
|
id: row.id,
|
||||||
name: result.name,
|
name: row.name,
|
||||||
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
|
ruleset: Ruleset.values.firstWhere((e) => e.name == row.ruleset),
|
||||||
description: result.description,
|
description: row.description,
|
||||||
color: AppColor.values.firstWhere((e) => e.name == result.color),
|
color: AppColor.values.firstWhere((e) => e.name == row.color),
|
||||||
icon: result.icon,
|
icon: row.icon,
|
||||||
createdAt: result.createdAt,
|
createdAt: row.createdAt,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
required String name,
|
required String name,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(gameTable)..where((g) => g.id.equals(gameId))).write(
|
await (update(gameTable)..where((tbl) => tbl.id.equals(gameId))).write(
|
||||||
GameTableCompanion(name: Value(name)),
|
GameTableCompanion(name: Value(name)),
|
||||||
);
|
);
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -135,7 +135,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
required Ruleset ruleset,
|
required Ruleset ruleset,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(gameTable)..where((g) => g.id.equals(gameId))).write(
|
await (update(gameTable)..where((tbl) => tbl.id.equals(gameId))).write(
|
||||||
GameTableCompanion(ruleset: Value(ruleset.name)),
|
GameTableCompanion(ruleset: Value(ruleset.name)),
|
||||||
);
|
);
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -147,7 +147,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
required String description,
|
required String description,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(gameTable)..where((g) => g.id.equals(gameId))).write(
|
await (update(gameTable)..where((tbl) => tbl.id.equals(gameId))).write(
|
||||||
GameTableCompanion(description: Value(description)),
|
GameTableCompanion(description: Value(description)),
|
||||||
);
|
);
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -159,7 +159,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
required AppColor color,
|
required AppColor color,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(gameTable)..where((g) => g.id.equals(gameId))).write(
|
await (update(gameTable)..where((tbl) => tbl.id.equals(gameId))).write(
|
||||||
GameTableCompanion(color: Value(color.name)),
|
GameTableCompanion(color: Value(color.name)),
|
||||||
);
|
);
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -171,7 +171,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
required String icon,
|
required String icon,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(gameTable)..where((g) => g.id.equals(gameId))).write(
|
await (update(gameTable)..where((tbl) => tbl.id.equals(gameId))).write(
|
||||||
GameTableCompanion(icon: Value(icon)),
|
GameTableCompanion(icon: Value(icon)),
|
||||||
);
|
);
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -182,7 +182,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
/// Deletes the game with the given [gameId] from the database.
|
/// Deletes the game with the given [gameId] from the database.
|
||||||
/// Returns `true` if the game was deleted, `false` if the game did not exist.
|
/// Returns `true` if the game was deleted, `false` if the game did not exist.
|
||||||
Future<bool> deleteGame({required String gameId}) async {
|
Future<bool> deleteGame({required String gameId}) async {
|
||||||
final query = delete(gameTable)..where((g) => g.id.equals(gameId));
|
final query = delete(gameTable)..where((tbl) => tbl.id.equals(gameId));
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,16 +143,16 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
|||||||
final query = select(groupTable);
|
final query = select(groupTable);
|
||||||
final result = await query.get();
|
final result = await query.get();
|
||||||
return Future.wait(
|
return Future.wait(
|
||||||
result.map((groupData) async {
|
result.map((row) async {
|
||||||
final members = await db.playerGroupDao.getPlayersOfGroup(
|
final members = await db.playerGroupDao.getPlayersOfGroup(
|
||||||
groupId: groupData.id,
|
groupId: row.id,
|
||||||
);
|
);
|
||||||
return Group(
|
return Group(
|
||||||
id: groupData.id,
|
id: row.id,
|
||||||
name: groupData.name,
|
name: row.name,
|
||||||
description: groupData.description,
|
description: row.description,
|
||||||
members: members,
|
members: members,
|
||||||
createdAt: groupData.createdAt,
|
createdAt: row.createdAt,
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@@ -161,18 +161,18 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
|||||||
/// Retrieves a [Group] by its [groupId], including its members.
|
/// Retrieves a [Group] by its [groupId], including its members.
|
||||||
Future<Group> getGroupById({required String groupId}) async {
|
Future<Group> getGroupById({required String groupId}) async {
|
||||||
final query = select(groupTable)..where((g) => g.id.equals(groupId));
|
final query = select(groupTable)..where((g) => g.id.equals(groupId));
|
||||||
final result = await query.getSingle();
|
final row = await query.getSingle();
|
||||||
|
|
||||||
List<Player> members = await db.playerGroupDao.getPlayersOfGroup(
|
List<Player> members = await db.playerGroupDao.getPlayersOfGroup(
|
||||||
groupId: groupId,
|
groupId: groupId,
|
||||||
);
|
);
|
||||||
|
|
||||||
return Group(
|
return Group(
|
||||||
id: result.id,
|
id: row.id,
|
||||||
name: result.name,
|
name: row.name,
|
||||||
description: result.description,
|
description: row.description,
|
||||||
members: members,
|
members: members,
|
||||||
createdAt: result.createdAt,
|
createdAt: row.createdAt,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,7 +180,7 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
|||||||
Future<int> getGroupCount() async {
|
Future<int> getGroupCount() async {
|
||||||
final count =
|
final count =
|
||||||
await (selectOnly(groupTable)..addColumns([groupTable.id.count()]))
|
await (selectOnly(groupTable)..addColumns([groupTable.id.count()]))
|
||||||
.map((row) => row.read(groupTable.id.count()))
|
.map((tbl) => tbl.read(groupTable.id.count()))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
return count ?? 0;
|
return count ?? 0;
|
||||||
}
|
}
|
||||||
@@ -190,28 +190,28 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
|||||||
Future<List<Group>> getGroupsByPlayer({required String playerId}) async {
|
Future<List<Group>> getGroupsByPlayer({required String playerId}) async {
|
||||||
final playerGroups = await (select(
|
final playerGroups = await (select(
|
||||||
playerGroupTable,
|
playerGroupTable,
|
||||||
)..where((pg) => pg.playerId.equals(playerId))).get();
|
)..where((tbl) => tbl.playerId.equals(playerId))).get();
|
||||||
|
|
||||||
if (playerGroups.isEmpty) return [];
|
if (playerGroups.isEmpty) return [];
|
||||||
|
|
||||||
final groupIds = playerGroups.map((pg) => pg.groupId).toSet().toList();
|
final groupIds = playerGroups.map((pg) => pg.groupId).toSet().toList();
|
||||||
final rows =
|
final result =
|
||||||
await (select(groupTable)
|
await (select(groupTable)
|
||||||
..where((g) => g.id.isIn(groupIds))
|
..where((tbl) => tbl.id.isIn(groupIds))
|
||||||
..orderBy([(g) => OrderingTerm.desc(g.createdAt)]))
|
..orderBy([(tbl) => OrderingTerm.desc(tbl.createdAt)]))
|
||||||
.get();
|
.get();
|
||||||
|
|
||||||
return Future.wait(
|
return Future.wait(
|
||||||
rows.map((groupData) async {
|
result.map((row) async {
|
||||||
final members = await db.playerGroupDao.getPlayersOfGroup(
|
final members = await db.playerGroupDao.getPlayersOfGroup(
|
||||||
groupId: groupData.id,
|
groupId: row.id,
|
||||||
);
|
);
|
||||||
return Group(
|
return Group(
|
||||||
id: groupData.id,
|
id: row.id,
|
||||||
name: groupData.name,
|
name: row.name,
|
||||||
description: groupData.description,
|
description: row.description,
|
||||||
members: members,
|
members: members,
|
||||||
createdAt: groupData.createdAt,
|
createdAt: row.createdAt,
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@@ -221,8 +221,8 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
|||||||
/// Returns `true` if the group exists, `false` otherwise.
|
/// Returns `true` if the group exists, `false` otherwise.
|
||||||
Future<bool> groupExists({required String groupId}) async {
|
Future<bool> groupExists({required String groupId}) async {
|
||||||
final query = select(groupTable)..where((g) => g.id.equals(groupId));
|
final query = select(groupTable)..where((g) => g.id.equals(groupId));
|
||||||
final result = await query.getSingleOrNull();
|
final row = await query.getSingleOrNull();
|
||||||
return result != null;
|
return row != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Delete */
|
/* Delete */
|
||||||
@@ -252,9 +252,8 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
|||||||
required String name,
|
required String name,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(groupTable)..where((g) => g.id.equals(groupId))).write(
|
await (update(groupTable)..where((tbl) => tbl.id.equals(groupId)))
|
||||||
GroupTableCompanion(name: Value(name)),
|
.write(GroupTableCompanion(name: Value(name)));
|
||||||
);
|
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -265,9 +264,8 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
|||||||
required String description,
|
required String description,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(groupTable)..where((g) => g.id.equals(groupId))).write(
|
await (update(groupTable)..where((tbl) => tbl.id.equals(groupId)))
|
||||||
GroupTableCompanion(description: Value(description)),
|
.write(GroupTableCompanion(description: Value(description)));
|
||||||
);
|
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -258,15 +258,15 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
/// Returns `true` if the match exists, otherwise `false`.
|
/// Returns `true` if the match exists, otherwise `false`.
|
||||||
Future<bool> matchExists({required String matchId}) async {
|
Future<bool> matchExists({required String matchId}) async {
|
||||||
final query = select(matchTable)..where((g) => g.id.equals(matchId));
|
final query = select(matchTable)..where((g) => g.id.equals(matchId));
|
||||||
final result = await query.getSingleOrNull();
|
final row = await query.getSingleOrNull();
|
||||||
return result != null;
|
return row != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves the number of matches in the database.
|
/// Retrieves the number of matches in the database.
|
||||||
Future<int> getMatchCount() async {
|
Future<int> getMatchCount() async {
|
||||||
final count =
|
final count =
|
||||||
await (selectOnly(matchTable)..addColumns([matchTable.id.count()]))
|
await (selectOnly(matchTable)..addColumns([matchTable.id.count()]))
|
||||||
.map((row) => row.read(matchTable.id.count()))
|
.map((tbl) => tbl.read(matchTable.id.count()))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
return count ?? 0;
|
return count ?? 0;
|
||||||
}
|
}
|
||||||
@@ -279,10 +279,12 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
return Future.wait(
|
return Future.wait(
|
||||||
result.map((row) async {
|
result.map((row) async {
|
||||||
final game = await db.gameDao.getGameById(gameId: row.gameId);
|
final game = await db.gameDao.getGameById(gameId: row.gameId);
|
||||||
|
|
||||||
Group? group;
|
Group? group;
|
||||||
if (row.groupId != null) {
|
if (row.groupId != null) {
|
||||||
group = await db.groupDao.getGroupById(groupId: row.groupId!);
|
group = await db.groupDao.getGroupById(groupId: row.groupId!);
|
||||||
}
|
}
|
||||||
|
|
||||||
final players = await db.playerMatchDao.getPlayersOfMatch(
|
final players = await db.playerMatchDao.getPlayersOfMatch(
|
||||||
matchId: row.id,
|
matchId: row.id,
|
||||||
);
|
);
|
||||||
@@ -312,13 +314,13 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
/// Retrieves a [Match] by its [matchId].
|
/// Retrieves a [Match] by its [matchId].
|
||||||
Future<Match> getMatchById({required String matchId}) async {
|
Future<Match> getMatchById({required String matchId}) async {
|
||||||
final query = select(matchTable)..where((g) => g.id.equals(matchId));
|
final query = select(matchTable)..where((g) => g.id.equals(matchId));
|
||||||
final result = await query.getSingle();
|
final row = await query.getSingle();
|
||||||
|
|
||||||
final game = await db.gameDao.getGameById(gameId: result.gameId);
|
final game = await db.gameDao.getGameById(gameId: row.gameId);
|
||||||
|
|
||||||
Group? group;
|
Group? group;
|
||||||
if (result.groupId != null) {
|
if (row.groupId != null) {
|
||||||
group = await db.groupDao.getGroupById(groupId: result.groupId!);
|
group = await db.groupDao.getGroupById(groupId: row.groupId!);
|
||||||
}
|
}
|
||||||
|
|
||||||
final players = await db.playerMatchDao.getPlayersOfMatch(matchId: matchId);
|
final players = await db.playerMatchDao.getPlayersOfMatch(matchId: matchId);
|
||||||
@@ -328,15 +330,15 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
final teams = await _getMatchTeams(matchId: matchId);
|
final teams = await _getMatchTeams(matchId: matchId);
|
||||||
|
|
||||||
return Match(
|
return Match(
|
||||||
id: result.id,
|
id: row.id,
|
||||||
name: result.name,
|
name: row.name,
|
||||||
game: game,
|
game: game,
|
||||||
group: group,
|
group: group,
|
||||||
players: players,
|
players: players,
|
||||||
teams: teams.isEmpty ? null : teams,
|
teams: teams.isEmpty ? null : teams,
|
||||||
notes: result.notes,
|
notes: row.notes,
|
||||||
createdAt: result.createdAt,
|
createdAt: row.createdAt,
|
||||||
endedAt: result.endedAt,
|
endedAt: row.endedAt,
|
||||||
scores: scores,
|
scores: scores,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -347,7 +349,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
await (selectOnly(matchTable)
|
await (selectOnly(matchTable)
|
||||||
..where(matchTable.gameId.equals(gameId))
|
..where(matchTable.gameId.equals(gameId))
|
||||||
..addColumns([matchTable.id.count()]))
|
..addColumns([matchTable.id.count()]))
|
||||||
.map((row) => row.read(matchTable.id.count()))
|
.map((tbl) => tbl.read(matchTable.id.count()))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
return count ?? 0;
|
return count ?? 0;
|
||||||
}
|
}
|
||||||
@@ -355,19 +357,19 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
Future<List<Match>> getMatchesByPlayer({required String playerId}) async {
|
Future<List<Match>> getMatchesByPlayer({required String playerId}) async {
|
||||||
final playerMatches = await (select(
|
final playerMatches = await (select(
|
||||||
playerMatchTable,
|
playerMatchTable,
|
||||||
)..where((pm) => pm.playerId.equals(playerId))).get();
|
)..where((tbl) => tbl.playerId.equals(playerId))).get();
|
||||||
|
|
||||||
if (playerMatches.isEmpty) return [];
|
if (playerMatches.isEmpty) return [];
|
||||||
|
|
||||||
final matchIds = playerMatches.map((pm) => pm.matchId).toSet().toList();
|
final matchIds = playerMatches.map((tbl) => tbl.matchId).toSet().toList();
|
||||||
final rows =
|
final result =
|
||||||
await (select(matchTable)
|
await (select(matchTable)
|
||||||
..where((m) => m.id.isIn(matchIds))
|
..where((tbl) => tbl.id.isIn(matchIds))
|
||||||
..orderBy([(m) => OrderingTerm.desc(m.createdAt)]))
|
..orderBy([(tbl) => OrderingTerm.desc(tbl.createdAt)]))
|
||||||
.get();
|
.get();
|
||||||
|
|
||||||
return Future.wait(
|
return Future.wait(
|
||||||
rows.map((row) async {
|
result.map((row) async {
|
||||||
final game = await db.gameDao.getGameById(gameId: row.gameId);
|
final game = await db.gameDao.getGameById(gameId: row.gameId);
|
||||||
|
|
||||||
Group? group;
|
Group? group;
|
||||||
@@ -403,16 +405,17 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
/// Queries the database directly, filtering by [groupId].
|
/// Queries the database directly, filtering by [groupId].
|
||||||
Future<List<Match>> getMatchesByGroup({required String groupId}) async {
|
Future<List<Match>> getMatchesByGroup({required String groupId}) async {
|
||||||
final query = select(matchTable)..where((m) => m.groupId.equals(groupId));
|
final query = select(matchTable)..where((m) => m.groupId.equals(groupId));
|
||||||
final rows = await query.get();
|
final result = await query.get();
|
||||||
|
|
||||||
return Future.wait(
|
return Future.wait(
|
||||||
rows.map((row) async {
|
result.map((row) async {
|
||||||
final game = await db.gameDao.getGameById(gameId: row.gameId);
|
final game = await db.gameDao.getGameById(gameId: row.gameId);
|
||||||
final group = await db.groupDao.getGroupById(groupId: groupId);
|
final group = await db.groupDao.getGroupById(groupId: groupId);
|
||||||
final players = await db.playerMatchDao.getPlayersOfMatch(
|
final players = await db.playerMatchDao.getPlayersOfMatch(
|
||||||
matchId: row.id,
|
matchId: row.id,
|
||||||
);
|
);
|
||||||
final teams = await _getMatchTeams(matchId: row.id);
|
final teams = await _getMatchTeams(matchId: row.id);
|
||||||
|
|
||||||
return Match(
|
return Match(
|
||||||
id: row.id,
|
id: row.id,
|
||||||
name: row.name,
|
name: row.name,
|
||||||
@@ -432,7 +435,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
Future<List<Team>> _getMatchTeams({required String matchId}) async {
|
Future<List<Team>> _getMatchTeams({required String matchId}) async {
|
||||||
// Get all unique team IDs from PlayerMatchTable for this match
|
// Get all unique team IDs from PlayerMatchTable for this match
|
||||||
final playerMatchQuery = select(db.playerMatchTable)
|
final playerMatchQuery = select(db.playerMatchTable)
|
||||||
..where((pm) => pm.matchId.equals(matchId) & pm.teamId.isNotNull());
|
..where((tbl) => tbl.matchId.equals(matchId) & tbl.teamId.isNotNull());
|
||||||
final playerMatches = await playerMatchQuery.get();
|
final playerMatches = await playerMatchQuery.get();
|
||||||
|
|
||||||
if (playerMatches.isEmpty) return [];
|
if (playerMatches.isEmpty) return [];
|
||||||
@@ -459,7 +462,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
required String matchId,
|
required String matchId,
|
||||||
required String name,
|
required String name,
|
||||||
}) async {
|
}) async {
|
||||||
final query = update(matchTable)..where((g) => g.id.equals(matchId));
|
final query = update(matchTable)..where((tbl) => tbl.id.equals(matchId));
|
||||||
final rowsAffected = await query.write(
|
final rowsAffected = await query.write(
|
||||||
MatchTableCompanion(name: Value(name)),
|
MatchTableCompanion(name: Value(name)),
|
||||||
);
|
);
|
||||||
@@ -474,7 +477,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
required String matchId,
|
required String matchId,
|
||||||
required String? groupId,
|
required String? groupId,
|
||||||
}) async {
|
}) async {
|
||||||
final query = update(matchTable)..where((g) => g.id.equals(matchId));
|
final query = update(matchTable)..where((tbl) => tbl.id.equals(matchId));
|
||||||
final rowsAffected = await query.write(
|
final rowsAffected = await query.write(
|
||||||
MatchTableCompanion(groupId: Value(groupId)),
|
MatchTableCompanion(groupId: Value(groupId)),
|
||||||
);
|
);
|
||||||
@@ -487,7 +490,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
required String matchId,
|
required String matchId,
|
||||||
required String notes,
|
required String notes,
|
||||||
}) async {
|
}) async {
|
||||||
final query = update(matchTable)..where((g) => g.id.equals(matchId));
|
final query = update(matchTable)..where((tbl) => tbl.id.equals(matchId));
|
||||||
final rowsAffected = await query.write(
|
final rowsAffected = await query.write(
|
||||||
MatchTableCompanion(notes: Value(notes)),
|
MatchTableCompanion(notes: Value(notes)),
|
||||||
);
|
);
|
||||||
@@ -498,7 +501,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
/// Sets the groupId to null.
|
/// Sets the groupId to null.
|
||||||
/// Returns `true` if more than 0 rows were affected, otherwise `false`.
|
/// Returns `true` if more than 0 rows were affected, otherwise `false`.
|
||||||
Future<bool> removeMatchGroup({required String matchId}) async {
|
Future<bool> removeMatchGroup({required String matchId}) async {
|
||||||
final query = update(matchTable)..where((g) => g.id.equals(matchId));
|
final query = update(matchTable)..where((tbl) => tbl.id.equals(matchId));
|
||||||
final rowsAffected = await query.write(
|
final rowsAffected = await query.write(
|
||||||
const MatchTableCompanion(groupId: Value(null)),
|
const MatchTableCompanion(groupId: Value(null)),
|
||||||
);
|
);
|
||||||
@@ -512,7 +515,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
required String matchId,
|
required String matchId,
|
||||||
required DateTime endedAt,
|
required DateTime endedAt,
|
||||||
}) async {
|
}) async {
|
||||||
final query = update(matchTable)..where((g) => g.id.equals(matchId));
|
final query = update(matchTable)..where((tbl) => tbl.id.equals(matchId));
|
||||||
final rowsAffected = await query.write(
|
final rowsAffected = await query.write(
|
||||||
MatchTableCompanion(endedAt: Value(endedAt)),
|
MatchTableCompanion(endedAt: Value(endedAt)),
|
||||||
);
|
);
|
||||||
@@ -524,7 +527,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
/// Deletes the match with the given [matchId] from the database.
|
/// Deletes the match with the given [matchId] from the database.
|
||||||
/// Returns `true` if more than 0 rows were affected, otherwise `false`.
|
/// Returns `true` if more than 0 rows were affected, otherwise `false`.
|
||||||
Future<bool> deleteMatch({required String matchId}) async {
|
Future<bool> deleteMatch({required String matchId}) async {
|
||||||
final query = delete(matchTable)..where((g) => g.id.equals(matchId));
|
final query = delete(matchTable)..where((tbl) => tbl.id.equals(matchId));
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
@@ -540,7 +543,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
|
|||||||
/// Deletes all matches associated with a specific game.
|
/// Deletes all matches associated with a specific game.
|
||||||
/// Returns the number of matches deleted.
|
/// Returns the number of matches deleted.
|
||||||
Future<int> deleteMatchesByGame({required String gameId}) async {
|
Future<int> deleteMatchesByGame({required String gameId}) async {
|
||||||
final query = delete(matchTable)..where((m) => m.gameId.equals(gameId));
|
final query = delete(matchTable)..where((tbl) => tbl.gameId.equals(gameId));
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected;
|
return rowsAffected;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
Future<int> getPlayerCount() async {
|
Future<int> getPlayerCount() async {
|
||||||
final count =
|
final count =
|
||||||
await (selectOnly(playerTable)..addColumns([playerTable.id.count()]))
|
await (selectOnly(playerTable)..addColumns([playerTable.id.count()]))
|
||||||
.map((row) => row.read(playerTable.id.count()))
|
.map((tbl) => tbl.read(playerTable.id.count()))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
return count ?? 0;
|
return count ?? 0;
|
||||||
}
|
}
|
||||||
@@ -122,8 +122,8 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
/// Returns `true` if the player exists, `false` otherwise.
|
/// Returns `true` if the player exists, `false` otherwise.
|
||||||
Future<bool> playerExists({required String playerId}) async {
|
Future<bool> playerExists({required String playerId}) async {
|
||||||
final query = select(playerTable)..where((p) => p.id.equals(playerId));
|
final query = select(playerTable)..where((p) => p.id.equals(playerId));
|
||||||
final result = await query.getSingleOrNull();
|
final row = await query.getSingleOrNull();
|
||||||
return result != null;
|
return row != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves all players from the database.
|
/// Retrieves all players from the database.
|
||||||
@@ -146,13 +146,13 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
/// Retrieves a [Player] by their [id].
|
/// Retrieves a [Player] by their [id].
|
||||||
Future<Player> getPlayerById({required String playerId}) async {
|
Future<Player> getPlayerById({required String playerId}) async {
|
||||||
final query = select(playerTable)..where((p) => p.id.equals(playerId));
|
final query = select(playerTable)..where((p) => p.id.equals(playerId));
|
||||||
final result = await query.getSingle();
|
final row = await query.getSingle();
|
||||||
return Player(
|
return Player(
|
||||||
id: result.id,
|
id: row.id,
|
||||||
name: result.name,
|
name: row.name,
|
||||||
description: result.description,
|
description: row.description,
|
||||||
createdAt: result.createdAt,
|
createdAt: row.createdAt,
|
||||||
nameCount: result.nameCount,
|
nameCount: row.nameCount,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
return transaction(() async {
|
return transaction(() async {
|
||||||
final previousPlayer = await (select(
|
final previousPlayer = await (select(
|
||||||
playerTable,
|
playerTable,
|
||||||
)..where((p) => p.id.equals(playerId))).getSingleOrNull();
|
)..where((tbl) => tbl.id.equals(playerId))).getSingleOrNull();
|
||||||
if (previousPlayer == null) return false;
|
if (previousPlayer == null) return false;
|
||||||
|
|
||||||
final previousName = previousPlayer.name;
|
final previousName = previousPlayer.name;
|
||||||
@@ -186,7 +186,7 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(
|
await (update(
|
||||||
playerTable,
|
playerTable,
|
||||||
)..where((p) => p.id.equals(playerId))).write(
|
)..where((tbl) => tbl.id.equals(playerId))).write(
|
||||||
PlayerTableCompanion(
|
PlayerTableCompanion(
|
||||||
name: Value(name),
|
name: Value(name),
|
||||||
nameCount: Value(newNameCount),
|
nameCount: Value(newNameCount),
|
||||||
@@ -203,9 +203,9 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
} else if (remainingCount > 1 && previousCount > 0) {
|
} else if (remainingCount > 1 && previousCount > 0) {
|
||||||
// Shift every player above the gap down by one to keep numbering in order.
|
// Shift every player above the gap down by one to keep numbering in order.
|
||||||
await (update(playerTable)..where(
|
await (update(playerTable)..where(
|
||||||
(p) =>
|
(tbl) =>
|
||||||
p.name.equals(previousName) &
|
tbl.name.equals(previousName) &
|
||||||
p.nameCount.isBiggerThanValue(previousCount),
|
tbl.nameCount.isBiggerThanValue(previousCount),
|
||||||
))
|
))
|
||||||
.write(
|
.write(
|
||||||
PlayerTableCompanion.custom(
|
PlayerTableCompanion.custom(
|
||||||
@@ -226,9 +226,8 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
required String description,
|
required String description,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(playerTable)..where((g) => g.id.equals(playerId))).write(
|
await (update(playerTable)..where((tbl) => tbl.id.equals(playerId)))
|
||||||
PlayerTableCompanion(description: Value(description)),
|
.write(PlayerTableCompanion(description: Value(description)));
|
||||||
);
|
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,7 +236,7 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
/// Deletes the player with the given [id] from the database.
|
/// Deletes the player with the given [id] from the database.
|
||||||
/// Returns `true` if the player was deleted, `false` if the player did not exist.
|
/// Returns `true` if the player was deleted, `false` if the player did not exist.
|
||||||
Future<bool> deletePlayer({required String playerId}) async {
|
Future<bool> deletePlayer({required String playerId}) async {
|
||||||
final query = delete(playerTable)..where((p) => p.id.equals(playerId));
|
final query = delete(playerTable)..where((tbl) => tbl.id.equals(playerId));
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
@@ -248,7 +247,7 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
/// Returns the highest name count if players with the same name exist,
|
/// Returns the highest name count if players with the same name exist,
|
||||||
/// otherwise `null`.
|
/// otherwise `null`.
|
||||||
Future<int> getNameCount({required String name}) async {
|
Future<int> getNameCount({required String name}) async {
|
||||||
final query = select(playerTable)..where((p) => p.name.equals(name));
|
final query = select(playerTable)..where((tbl) => tbl.name.equals(name));
|
||||||
final result = await query.get();
|
final result = await query.get();
|
||||||
return result.length;
|
return result.length;
|
||||||
}
|
}
|
||||||
@@ -259,7 +258,7 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
required String playerId,
|
required String playerId,
|
||||||
required int nameCount,
|
required int nameCount,
|
||||||
}) async {
|
}) async {
|
||||||
final query = update(playerTable)..where((p) => p.id.equals(playerId));
|
final query = update(playerTable)..where((tbl) => tbl.id.equals(playerId));
|
||||||
final rowsAffected = await query.write(
|
final rowsAffected = await query.write(
|
||||||
PlayerTableCompanion(nameCount: Value(nameCount)),
|
PlayerTableCompanion(nameCount: Value(nameCount)),
|
||||||
);
|
);
|
||||||
@@ -269,8 +268,8 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
Future<Player?> getPlayerWithHighestNameCount({required String name}) async {
|
Future<Player?> getPlayerWithHighestNameCount({required String name}) async {
|
||||||
final query = select(playerTable)
|
final query = select(playerTable)
|
||||||
..where((p) => p.name.equals(name))
|
..where((tbl) => tbl.name.equals(name))
|
||||||
..orderBy([(p) => OrderingTerm.desc(p.nameCount)])
|
..orderBy([(tbl) => OrderingTerm.desc(tbl.nameCount)])
|
||||||
..limit(1);
|
..limit(1);
|
||||||
final result = await query.getSingleOrNull();
|
final result = await query.getSingleOrNull();
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
@@ -324,9 +323,8 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
|||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
Future<bool> initializeNameCount({required String name}) async {
|
Future<bool> initializeNameCount({required String name}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(playerTable)..where((p) => p.name.equals(name))).write(
|
await (update(playerTable)..where((tbl) => tbl.name.equals(name)))
|
||||||
const PlayerTableCompanion(nameCount: Value(1)),
|
.write(const PlayerTableCompanion(nameCount: Value(1)));
|
||||||
);
|
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,15 +46,15 @@ class PlayerGroupDao extends DatabaseAccessor<AppDatabase>
|
|||||||
),
|
),
|
||||||
])..where(playerGroupTable.groupId.equals(groupId));
|
])..where(playerGroupTable.groupId.equals(groupId));
|
||||||
|
|
||||||
final results = await query.map((row) => row.readTable(playerTable)).get();
|
final result = await query.map((row) => row.readTable(playerTable)).get();
|
||||||
return results
|
return result
|
||||||
.map(
|
.map(
|
||||||
(result) => Player(
|
(row) => Player(
|
||||||
id: result.id,
|
id: row.id,
|
||||||
createdAt: result.createdAt,
|
createdAt: row.createdAt,
|
||||||
name: result.name,
|
name: row.name,
|
||||||
nameCount: result.nameCount,
|
nameCount: row.nameCount,
|
||||||
description: result.description,
|
description: row.description,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.toList();
|
.toList();
|
||||||
@@ -67,7 +67,9 @@ class PlayerGroupDao extends DatabaseAccessor<AppDatabase>
|
|||||||
required String groupId,
|
required String groupId,
|
||||||
}) async {
|
}) async {
|
||||||
final query = select(playerGroupTable)
|
final query = select(playerGroupTable)
|
||||||
..where((p) => p.playerId.equals(playerId) & p.groupId.equals(groupId));
|
..where(
|
||||||
|
(tbl) => tbl.playerId.equals(playerId) & tbl.groupId.equals(groupId),
|
||||||
|
);
|
||||||
final result = await query.getSingleOrNull();
|
final result = await query.getSingleOrNull();
|
||||||
return result != null;
|
return result != null;
|
||||||
}
|
}
|
||||||
@@ -88,7 +90,7 @@ class PlayerGroupDao extends DatabaseAccessor<AppDatabase>
|
|||||||
await db.transaction(() async {
|
await db.transaction(() async {
|
||||||
// Remove all existing players from the group
|
// Remove all existing players from the group
|
||||||
final deleteQuery = delete(db.playerGroupTable)
|
final deleteQuery = delete(db.playerGroupTable)
|
||||||
..where((p) => p.groupId.equals(groupId));
|
..where((tbl) => tbl.groupId.equals(groupId));
|
||||||
await deleteQuery.go();
|
await deleteQuery.go();
|
||||||
|
|
||||||
// Add new players to the player table if they don't exist
|
// Add new players to the player table if they don't exist
|
||||||
@@ -128,7 +130,9 @@ class PlayerGroupDao extends DatabaseAccessor<AppDatabase>
|
|||||||
required String groupId,
|
required String groupId,
|
||||||
}) async {
|
}) async {
|
||||||
final query = delete(playerGroupTable)
|
final query = delete(playerGroupTable)
|
||||||
..where((p) => p.playerId.equals(playerId) & p.groupId.equals(groupId));
|
..where(
|
||||||
|
(tbl) => tbl.playerId.equals(playerId) & tbl.groupId.equals(groupId),
|
||||||
|
);
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class PlayerMatchDao extends DatabaseAccessor<AppDatabase>
|
|||||||
await (selectOnly(playerMatchTable)
|
await (selectOnly(playerMatchTable)
|
||||||
..where(playerMatchTable.matchId.equals(matchId))
|
..where(playerMatchTable.matchId.equals(matchId))
|
||||||
..addColumns([playerMatchTable.playerId.count()]))
|
..addColumns([playerMatchTable.playerId.count()]))
|
||||||
.map((row) => row.read(playerMatchTable.playerId.count()))
|
.map((tbl) => tbl.read(playerMatchTable.playerId.count()))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
return (count ?? 0) > 0;
|
return (count ?? 0) > 0;
|
||||||
}
|
}
|
||||||
@@ -56,7 +56,7 @@ class PlayerMatchDao extends DatabaseAccessor<AppDatabase>
|
|||||||
..where(playerMatchTable.matchId.equals(matchId))
|
..where(playerMatchTable.matchId.equals(matchId))
|
||||||
..where(playerMatchTable.playerId.equals(playerId))
|
..where(playerMatchTable.playerId.equals(playerId))
|
||||||
..addColumns([playerMatchTable.playerId.count()]))
|
..addColumns([playerMatchTable.playerId.count()]))
|
||||||
.map((row) => row.read(playerMatchTable.playerId.count()))
|
.map((tbl) => tbl.read(playerMatchTable.playerId.count()))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
return (count ?? 0) > 0;
|
return (count ?? 0) > 0;
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ class PlayerMatchDao extends DatabaseAccessor<AppDatabase>
|
|||||||
Future<List<Player>> getPlayersOfMatch({required String matchId}) async {
|
Future<List<Player>> getPlayersOfMatch({required String matchId}) async {
|
||||||
final result = await (select(
|
final result = await (select(
|
||||||
playerMatchTable,
|
playerMatchTable,
|
||||||
)..where((p) => p.matchId.equals(matchId))).get();
|
)..where((tbl) => tbl.matchId.equals(matchId))).get();
|
||||||
|
|
||||||
if (result.isEmpty) return [];
|
if (result.isEmpty) return [];
|
||||||
|
|
||||||
@@ -85,8 +85,8 @@ class PlayerMatchDao extends DatabaseAccessor<AppDatabase>
|
|||||||
}) async {
|
}) async {
|
||||||
final result =
|
final result =
|
||||||
await (select(playerMatchTable)
|
await (select(playerMatchTable)
|
||||||
..where((p) => p.matchId.equals(matchId))
|
..where((tbl) => tbl.matchId.equals(matchId))
|
||||||
..where((p) => p.teamId.equals(teamId)))
|
..where((tbl) => tbl.teamId.equals(teamId)))
|
||||||
.get();
|
.get();
|
||||||
|
|
||||||
if (result.isEmpty) return [];
|
if (result.isEmpty) return [];
|
||||||
@@ -109,7 +109,8 @@ class PlayerMatchDao extends DatabaseAccessor<AppDatabase>
|
|||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(playerMatchTable)..where(
|
await (update(playerMatchTable)..where(
|
||||||
(p) => p.matchId.equals(matchId) & p.playerId.equals(playerId),
|
(tbl) =>
|
||||||
|
tbl.matchId.equals(matchId) & tbl.playerId.equals(playerId),
|
||||||
))
|
))
|
||||||
.write(PlayerMatchTableCompanion(teamId: Value(teamId)));
|
.write(PlayerMatchTableCompanion(teamId: Value(teamId)));
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -143,9 +144,9 @@ class PlayerMatchDao extends DatabaseAccessor<AppDatabase>
|
|||||||
// Remove old players
|
// Remove old players
|
||||||
if (playersToRemove.isNotEmpty) {
|
if (playersToRemove.isNotEmpty) {
|
||||||
await (delete(playerMatchTable)..where(
|
await (delete(playerMatchTable)..where(
|
||||||
(pg) =>
|
(tbl) =>
|
||||||
pg.matchId.equals(matchId) &
|
tbl.matchId.equals(matchId) &
|
||||||
pg.playerId.isIn(playersToRemove.toList()),
|
tbl.playerId.isIn(playersToRemove.toList()),
|
||||||
))
|
))
|
||||||
.go();
|
.go();
|
||||||
}
|
}
|
||||||
@@ -182,8 +183,8 @@ class PlayerMatchDao extends DatabaseAccessor<AppDatabase>
|
|||||||
required String playerId,
|
required String playerId,
|
||||||
}) async {
|
}) async {
|
||||||
final query = delete(playerMatchTable)
|
final query = delete(playerMatchTable)
|
||||||
..where((pg) => pg.matchId.equals(matchId))
|
..where((tbl) => tbl.matchId.equals(matchId))
|
||||||
..where((pg) => pg.playerId.equals(playerId));
|
..where((tbl) => tbl.playerId.equals(playerId));
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,10 +70,10 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
}) async {
|
}) async {
|
||||||
final query = select(scoreEntryTable)
|
final query = select(scoreEntryTable)
|
||||||
..where(
|
..where(
|
||||||
(s) =>
|
(tbl) =>
|
||||||
s.playerId.equals(playerId) &
|
tbl.playerId.equals(playerId) &
|
||||||
s.matchId.equals(matchId) &
|
tbl.matchId.equals(matchId) &
|
||||||
s.roundNumber.equals(roundNumber),
|
tbl.roundNumber.equals(roundNumber),
|
||||||
);
|
);
|
||||||
|
|
||||||
final result = await query.getSingleOrNull();
|
final result = await query.getSingleOrNull();
|
||||||
@@ -91,7 +91,7 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
required String matchId,
|
required String matchId,
|
||||||
}) async {
|
}) async {
|
||||||
final query = select(scoreEntryTable)
|
final query = select(scoreEntryTable)
|
||||||
..where((s) => s.matchId.equals(matchId));
|
..where((tbl) => tbl.matchId.equals(matchId));
|
||||||
final result = await query.get();
|
final result = await query.get();
|
||||||
|
|
||||||
final Map<String, ScoreEntry?> scoresByPlayer = {};
|
final Map<String, ScoreEntry?> scoresByPlayer = {};
|
||||||
@@ -113,8 +113,10 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
required String matchId,
|
required String matchId,
|
||||||
}) async {
|
}) async {
|
||||||
final query = select(scoreEntryTable)
|
final query = select(scoreEntryTable)
|
||||||
..where((s) => s.playerId.equals(playerId) & s.matchId.equals(matchId))
|
..where(
|
||||||
..orderBy([(s) => OrderingTerm.asc(s.roundNumber)]);
|
(tbl) => tbl.playerId.equals(playerId) & tbl.matchId.equals(matchId),
|
||||||
|
)
|
||||||
|
..orderBy([(tbl) => OrderingTerm.asc(tbl.roundNumber)]);
|
||||||
final result = await query.get();
|
final result = await query.get();
|
||||||
return result
|
return result
|
||||||
.map(
|
.map(
|
||||||
@@ -136,8 +138,8 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
final query = selectOnly(scoreEntryTable)
|
final query = selectOnly(scoreEntryTable)
|
||||||
..where(scoreEntryTable.matchId.equals(matchId))
|
..where(scoreEntryTable.matchId.equals(matchId))
|
||||||
..addColumns([scoreEntryTable.roundNumber.max()]);
|
..addColumns([scoreEntryTable.roundNumber.max()]);
|
||||||
final result = await query.getSingle();
|
final row = await query.getSingle();
|
||||||
return result.read(scoreEntryTable.roundNumber.max());
|
return row.read(scoreEntryTable.roundNumber.max());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Aggregates the total score for a player in a match by summing all their
|
/// Aggregates the total score for a player in a match by summing all their
|
||||||
@@ -166,10 +168,10 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(scoreEntryTable)..where(
|
await (update(scoreEntryTable)..where(
|
||||||
(s) =>
|
(tbl) =>
|
||||||
s.playerId.equals(playerId) &
|
tbl.playerId.equals(playerId) &
|
||||||
s.matchId.equals(matchId) &
|
tbl.matchId.equals(matchId) &
|
||||||
s.roundNumber.equals(entry.roundNumber),
|
tbl.roundNumber.equals(entry.roundNumber),
|
||||||
))
|
))
|
||||||
.write(
|
.write(
|
||||||
ScoreEntryTableCompanion(
|
ScoreEntryTableCompanion(
|
||||||
@@ -190,10 +192,10 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
}) async {
|
}) async {
|
||||||
final query = delete(scoreEntryTable)
|
final query = delete(scoreEntryTable)
|
||||||
..where(
|
..where(
|
||||||
(s) =>
|
(tbl) =>
|
||||||
s.playerId.equals(playerId) &
|
tbl.playerId.equals(playerId) &
|
||||||
s.matchId.equals(matchId) &
|
tbl.matchId.equals(matchId) &
|
||||||
s.roundNumber.equals(roundNumber),
|
tbl.roundNumber.equals(roundNumber),
|
||||||
);
|
);
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -201,7 +203,7 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
|
|
||||||
Future<bool> deleteAllScoresForMatch({required String matchId}) async {
|
Future<bool> deleteAllScoresForMatch({required String matchId}) async {
|
||||||
final query = delete(scoreEntryTable)
|
final query = delete(scoreEntryTable)
|
||||||
..where((s) => s.matchId.equals(matchId));
|
..where((tbl) => tbl.matchId.equals(matchId));
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
@@ -211,7 +213,9 @@ class ScoreEntryDao extends DatabaseAccessor<AppDatabase>
|
|||||||
required String playerId,
|
required String playerId,
|
||||||
}) async {
|
}) async {
|
||||||
final query = delete(scoreEntryTable)
|
final query = delete(scoreEntryTable)
|
||||||
..where((s) => s.playerId.equals(playerId) & s.matchId.equals(matchId));
|
..where(
|
||||||
|
(tbl) => tbl.playerId.equals(playerId) & tbl.matchId.equals(matchId),
|
||||||
|
);
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,14 +20,14 @@ class StatisticGameDao extends DatabaseAccessor<AppDatabase>
|
|||||||
final results = await query.map((row) => row.readTable(gameTable)).get();
|
final results = await query.map((row) => row.readTable(gameTable)).get();
|
||||||
return results
|
return results
|
||||||
.map(
|
.map(
|
||||||
(result) => Game(
|
(row) => Game(
|
||||||
id: result.id,
|
id: row.id,
|
||||||
name: result.name,
|
name: row.name,
|
||||||
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
|
ruleset: Ruleset.values.firstWhere((e) => e.name == row.ruleset),
|
||||||
description: result.description,
|
description: row.description,
|
||||||
color: AppColor.values.firstWhere((e) => e.name == result.color),
|
color: AppColor.values.firstWhere((e) => e.name == row.color),
|
||||||
icon: result.icon,
|
icon: row.icon,
|
||||||
createdAt: result.createdAt,
|
createdAt: row.createdAt,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.toList();
|
.toList();
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ class StatisticScopeDao extends DatabaseAccessor<AppDatabase>
|
|||||||
final results = await query.get();
|
final results = await query.get();
|
||||||
return results
|
return results
|
||||||
.map(
|
.map(
|
||||||
(result) => StatisticScope.values.firstWhere(
|
(row) => StatisticScope.values.firstWhere(
|
||||||
(e) => e.name == result.scope,
|
(e) => e.name == row.scope,
|
||||||
orElse: () => throw Exception(
|
orElse: () => throw Exception(
|
||||||
'Invalid scope value: ${result.scope} for statistic ID: $statisticId',
|
'Invalid scope value: ${row.scope} for statistic ID: $statisticId',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
|
|||||||
Future<int> getTeamCount() async {
|
Future<int> getTeamCount() async {
|
||||||
final count =
|
final count =
|
||||||
await (selectOnly(teamTable)..addColumns([teamTable.id.count()]))
|
await (selectOnly(teamTable)..addColumns([teamTable.id.count()]))
|
||||||
.map((row) => row.read(teamTable.id.count()))
|
.map((tbl) => tbl.read(teamTable.id.count()))
|
||||||
.getSingle();
|
.getSingle();
|
||||||
return count ?? 0;
|
return count ?? 0;
|
||||||
}
|
}
|
||||||
@@ -95,8 +95,8 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
|
|||||||
/// Returns `true` if the team exists, `false` otherwise.
|
/// Returns `true` if the team exists, `false` otherwise.
|
||||||
Future<bool> teamExists({required String teamId}) async {
|
Future<bool> teamExists({required String teamId}) async {
|
||||||
final query = select(teamTable)..where((t) => t.id.equals(teamId));
|
final query = select(teamTable)..where((t) => t.id.equals(teamId));
|
||||||
final result = await query.getSingleOrNull();
|
final row = await query.getSingleOrNull();
|
||||||
return result != null;
|
return row != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Retrieves all teams from the database.
|
/// Retrieves all teams from the database.
|
||||||
@@ -119,12 +119,12 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
|
|||||||
/// Retrieves a [Team] by its [teamId], including its members.
|
/// Retrieves a [Team] by its [teamId], including its members.
|
||||||
Future<Team> getTeamById({required String teamId}) async {
|
Future<Team> getTeamById({required String teamId}) async {
|
||||||
final query = select(teamTable)..where((t) => t.id.equals(teamId));
|
final query = select(teamTable)..where((t) => t.id.equals(teamId));
|
||||||
final result = await query.getSingle();
|
final row = await query.getSingle();
|
||||||
final members = await _getTeamMembers(teamId: teamId);
|
final members = await _getTeamMembers(teamId: teamId);
|
||||||
return Team(
|
return Team(
|
||||||
id: result.id,
|
id: row.id,
|
||||||
name: result.name,
|
name: row.name,
|
||||||
createdAt: result.createdAt,
|
createdAt: row.createdAt,
|
||||||
members: members,
|
members: members,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -133,13 +133,13 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
|
|||||||
Future<List<Player>> _getTeamMembers({required String teamId}) async {
|
Future<List<Player>> _getTeamMembers({required String teamId}) async {
|
||||||
// Get all player_match entries with this teamId
|
// Get all player_match entries with this teamId
|
||||||
final playerMatchQuery = select(db.playerMatchTable)
|
final playerMatchQuery = select(db.playerMatchTable)
|
||||||
..where((pm) => pm.teamId.equals(teamId));
|
..where((tbl) => tbl.teamId.equals(teamId));
|
||||||
final playerMatches = await playerMatchQuery.get();
|
final playerMatches = await playerMatchQuery.get();
|
||||||
|
|
||||||
if (playerMatches.isEmpty) return [];
|
if (playerMatches.isEmpty) return [];
|
||||||
|
|
||||||
// Get unique player IDs
|
// Get unique player IDs
|
||||||
final playerIds = playerMatches.map((pm) => pm.playerId).toSet();
|
final playerIds = playerMatches.map((tbl) => tbl.playerId).toSet();
|
||||||
|
|
||||||
// Fetch all players
|
// Fetch all players
|
||||||
final players = await Future.wait(
|
final players = await Future.wait(
|
||||||
@@ -156,7 +156,7 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
|
|||||||
required String name,
|
required String name,
|
||||||
}) async {
|
}) async {
|
||||||
final rowsAffected =
|
final rowsAffected =
|
||||||
await (update(teamTable)..where((t) => t.id.equals(teamId))).write(
|
await (update(teamTable)..where((tbl) => tbl.id.equals(teamId))).write(
|
||||||
TeamTableCompanion(name: Value(name)),
|
TeamTableCompanion(name: Value(name)),
|
||||||
);
|
);
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
@@ -175,7 +175,7 @@ class TeamDao extends DatabaseAccessor<AppDatabase> with _$TeamDaoMixin {
|
|||||||
/// Deletes the team with the given [teamId] from the database.
|
/// Deletes the team with the given [teamId] from the database.
|
||||||
/// Returns `true` if the team was deleted, `false` otherwise.
|
/// Returns `true` if the team was deleted, `false` otherwise.
|
||||||
Future<bool> deleteTeam({required String teamId}) async {
|
Future<bool> deleteTeam({required String teamId}) async {
|
||||||
final query = delete(teamTable)..where((t) => t.id.equals(teamId));
|
final query = delete(teamTable)..where((tbl) => tbl.id.equals(teamId));
|
||||||
final rowsAffected = await query.go();
|
final rowsAffected = await query.go();
|
||||||
return rowsAffected > 0;
|
return rowsAffected > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user