From 8a312152a502330c6f648083a24ecef280907ad0 Mon Sep 17 00:00:00 2001 From: Felix Kirchner Date: Sun, 12 Apr 2026 01:59:51 +0200 Subject: [PATCH] Refactoring --- lib/data/dao/match_dao.dart | 2 +- lib/data/dao/score_dao.dart | 84 +++-- lib/data/dao/score_dao.g.dart | 9 +- lib/data/db/database.dart | 10 +- lib/data/db/database.g.dart | 320 ++++++++++-------- ...core_table.dart => score_entry_table.dart} | 2 +- lib/data/models/match.dart | 6 +- lib/data/models/score.dart | 18 - lib/data/models/score_entry.dart | 22 ++ .../relationships/player_match_test.dart | 15 - test/db_tests/values/score_test.dart | 177 +++------- test/services/data_transfer_service_test.dart | 14 +- 12 files changed, 317 insertions(+), 362 deletions(-) rename lib/data/db/tables/{score_table.dart => score_entry_table.dart} (93%) delete mode 100644 lib/data/models/score.dart create mode 100644 lib/data/models/score_entry.dart diff --git a/lib/data/dao/match_dao.dart b/lib/data/dao/match_dao.dart index 3dbacb4..b23930b 100644 --- a/lib/data/dao/match_dao.dart +++ b/lib/data/dao/match_dao.dart @@ -110,7 +110,7 @@ class MatchDao extends DatabaseAccessor with _$MatchDaoMixin { for (final pid in match.scores.keys) { final playerScores = match.scores[pid]!; await db.scoreDao.addScoresAsList( - scores: playerScores, + entrys: playerScores, playerId: pid, matchId: match.id, ); diff --git a/lib/data/dao/score_dao.dart b/lib/data/dao/score_dao.dart index 0d314d0..22b18b0 100644 --- a/lib/data/dao/score_dao.dart +++ b/lib/data/dao/score_dao.dart @@ -2,13 +2,13 @@ import 'dart:async'; import 'package:drift/drift.dart'; import 'package:tallee/data/db/database.dart'; -import 'package:tallee/data/db/tables/score_table.dart'; +import 'package:tallee/data/db/tables/score_entry_table.dart'; import 'package:tallee/data/models/player.dart'; -import 'package:tallee/data/models/score.dart'; +import 'package:tallee/data/models/score_entry.dart'; part 'score_dao.g.dart'; -@DriftAccessor(tables: [ScoreTable]) +@DriftAccessor(tables: [ScoreEntryTable]) class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { ScoreDao(super.db); @@ -16,31 +16,29 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { Future addScore({ required String playerId, required String matchId, - required int score, - int change = 0, - int roundNumber = 0, + required ScoreEntry entry, }) async { - await into(scoreTable).insert( - ScoreTableCompanion.insert( + await into(scoreEntryTable).insert( + ScoreEntryTableCompanion.insert( playerId: playerId, matchId: matchId, - roundNumber: roundNumber, - score: score, - change: change, + roundNumber: entry.roundNumber, + score: entry.score, + change: entry.change, ), mode: InsertMode.insertOrReplace, ); } Future addScoresAsList({ - required List scores, + required List entrys, required String playerId, required String matchId, }) async { - if (scores.isEmpty) return; - final entries = scores + if (entrys.isEmpty) return; + final entries = entrys .map( - (score) => ScoreTableCompanion.insert( + (score) => ScoreEntryTableCompanion.insert( playerId: playerId, matchId: matchId, roundNumber: score.roundNumber, @@ -56,12 +54,12 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { } /// Retrieves the score for a specific round. - Future getScore({ + Future getScore({ required String playerId, required String matchId, int roundNumber = 0, }) async { - final query = select(scoreTable) + final query = select(scoreEntryTable) ..where( (s) => s.playerId.equals(playerId) & @@ -72,7 +70,7 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { final result = await query.getSingleOrNull(); if (result == null) return null; - return Score( + return ScoreEntry( roundNumber: result.roundNumber, score: result.score, change: result.change, @@ -80,15 +78,16 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { } /// Retrieves all scores for a specific match. - Future>> getAllMatchScores({ + Future>> getAllMatchScores({ required String matchId, }) async { - final query = select(scoreTable)..where((s) => s.matchId.equals(matchId)); + final query = select(scoreEntryTable) + ..where((s) => s.matchId.equals(matchId)); final result = await query.get(); - final Map> scoresByPlayer = {}; + final Map> scoresByPlayer = {}; for (final row in result) { - final score = Score( + final score = ScoreEntry( roundNumber: row.roundNumber, score: row.score, change: row.change, @@ -100,17 +99,17 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { } /// Retrieves all scores for a specific player in a match. - Future> getAllPlayerScoresInMatch({ + Future> getAllPlayerScoresInMatch({ required String playerId, required String matchId, }) async { - final query = select(scoreTable) + final query = select(scoreEntryTable) ..where((s) => s.playerId.equals(playerId) & s.matchId.equals(matchId)) ..orderBy([(s) => OrderingTerm.asc(s.roundNumber)]); final result = await query.get(); return result .map( - (row) => Score( + (row) => ScoreEntry( roundNumber: row.roundNumber, score: row.score, change: row.change, @@ -126,21 +125,19 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { Future updateScore({ required String playerId, required String matchId, - required int newScore, - int newChange = 0, - int roundNumber = 0, + required ScoreEntry newEntry, }) async { final rowsAffected = - await (update(scoreTable)..where( + await (update(scoreEntryTable)..where( (s) => s.playerId.equals(playerId) & s.matchId.equals(matchId) & - s.roundNumber.equals(roundNumber), + s.roundNumber.equals(newEntry.roundNumber), )) .write( - ScoreTableCompanion( - score: Value(newScore), - change: Value(newChange), + ScoreEntryTableCompanion( + score: Value(newEntry.score), + change: Value(newEntry.change), ), ); return rowsAffected > 0; @@ -152,7 +149,7 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { required String matchId, int roundNumber = 0, }) async { - final query = delete(scoreTable) + final query = delete(scoreEntryTable) ..where( (s) => s.playerId.equals(playerId) & @@ -164,7 +161,8 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { } Future deleteAllScoresForMatch({required String matchId}) async { - final query = delete(scoreTable)..where((s) => s.matchId.equals(matchId)); + final query = delete(scoreEntryTable) + ..where((s) => s.matchId.equals(matchId)); final rowsAffected = await query.go(); return rowsAffected > 0; } @@ -173,7 +171,7 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { required String matchId, required String playerId, }) async { - final query = delete(scoreTable) + final query = delete(scoreEntryTable) ..where((s) => s.playerId.equals(playerId) & s.matchId.equals(matchId)); final rowsAffected = await query.go(); return rowsAffected > 0; @@ -182,7 +180,7 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { /// Gets the highest (latest) round number for a match. /// Returns `null` if there are no scores for the match. Future getLatestRoundNumber({required String matchId}) async { - final query = selectOnly(scoreTable) + final query = selectOnly(scoreEntryTable) ..where(scoreTable.matchId.equals(matchId)) ..addColumns([scoreTable.roundNumber.max()]); final result = await query.getSingle(); @@ -218,8 +216,8 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { deleteAllScoresForMatch(matchId: matchId); // Set the winner's score to 1 - final rowsAffected = await into(scoreTable).insert( - ScoreTableCompanion.insert( + final rowsAffected = await into(scoreEntryTable).insert( + ScoreEntryTableCompanion.insert( playerId: playerId, matchId: matchId, roundNumber: 0, @@ -234,7 +232,7 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { // Retrieves the winner of a match based on the highest score. Future getWinner({required String matchId}) async { - final query = select(scoreTable) + final query = select(scoreEntryTable) ..where((s) => s.matchId.equals(matchId)) ..orderBy([(s) => OrderingTerm.desc(s.score)]) ..limit(1); @@ -278,8 +276,8 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { deleteAllScoresForMatch(matchId: matchId); // Set the loosers score to 0 - final rowsAffected = await into(scoreTable).insert( - ScoreTableCompanion.insert( + final rowsAffected = await into(scoreEntryTable).insert( + ScoreEntryTableCompanion.insert( playerId: playerId, matchId: matchId, roundNumber: 0, @@ -294,7 +292,7 @@ class ScoreDao extends DatabaseAccessor with _$ScoreDaoMixin { /// Retrieves the looser of a match based on the score 0. Future getLooser({required String matchId}) async { - final query = select(scoreTable) + final query = select(scoreEntryTable) ..where((s) => s.matchId.equals(matchId) & s.score.equals(0)); final result = await query.getSingleOrNull(); diff --git a/lib/data/dao/score_dao.g.dart b/lib/data/dao/score_dao.g.dart index 046028c..451075f 100644 --- a/lib/data/dao/score_dao.g.dart +++ b/lib/data/dao/score_dao.g.dart @@ -8,7 +8,7 @@ mixin _$ScoreDaoMixin on DatabaseAccessor { $GameTableTable get gameTable => attachedDatabase.gameTable; $GroupTableTable get groupTable => attachedDatabase.groupTable; $MatchTableTable get matchTable => attachedDatabase.matchTable; - $ScoreTableTable get scoreTable => attachedDatabase.scoreTable; + $ScoreEntryTableTable get scoreEntryTable => attachedDatabase.scoreEntryTable; ScoreDaoManager get managers => ScoreDaoManager(this); } @@ -23,6 +23,9 @@ class ScoreDaoManager { $$GroupTableTableTableManager(_db.attachedDatabase, _db.groupTable); $$MatchTableTableTableManager get matchTable => $$MatchTableTableTableManager(_db.attachedDatabase, _db.matchTable); - $$ScoreTableTableTableManager get scoreTable => - $$ScoreTableTableTableManager(_db.attachedDatabase, _db.scoreTable); + $$ScoreEntryTableTableTableManager get scoreEntryTable => + $$ScoreEntryTableTableTableManager( + _db.attachedDatabase, + _db.scoreEntryTable, + ); } diff --git a/lib/data/db/database.dart b/lib/data/db/database.dart index 4ab053e..9e96eb3 100644 --- a/lib/data/db/database.dart +++ b/lib/data/db/database.dart @@ -15,7 +15,7 @@ import 'package:tallee/data/db/tables/match_table.dart'; import 'package:tallee/data/db/tables/player_group_table.dart'; import 'package:tallee/data/db/tables/player_match_table.dart'; import 'package:tallee/data/db/tables/player_table.dart'; -import 'package:tallee/data/db/tables/score_table.dart'; +import 'package:tallee/data/db/tables/score_entry_table.dart'; import 'package:tallee/data/db/tables/team_table.dart'; part 'database.g.dart'; @@ -29,7 +29,7 @@ part 'database.g.dart'; PlayerMatchTable, GameTable, TeamTable, - ScoreTable, + ScoreEntryTable, ], daos: [ PlayerDao, @@ -39,7 +39,7 @@ part 'database.g.dart'; PlayerMatchDao, GameDao, ScoreDao, - TeamDao + TeamDao, ], ) class AppDatabase extends _$AppDatabase { @@ -60,7 +60,9 @@ class AppDatabase extends _$AppDatabase { static QueryExecutor _openConnection() { return driftDatabase( name: 'gametracker_db', - native: const DriftNativeOptions(databaseDirectory: getApplicationSupportDirectory), + native: const DriftNativeOptions( + databaseDirectory: getApplicationSupportDirectory, + ), ); } } diff --git a/lib/data/db/database.g.dart b/lib/data/db/database.g.dart index 81b28a5..8c0bd02 100644 --- a/lib/data/db/database.g.dart +++ b/lib/data/db/database.g.dart @@ -2307,12 +2307,12 @@ class PlayerMatchTableCompanion extends UpdateCompanion { } } -class $ScoreTableTable extends ScoreTable - with TableInfo<$ScoreTableTable, ScoreTableData> { +class $ScoreEntryTableTable extends ScoreEntryTable + with TableInfo<$ScoreEntryTableTable, ScoreEntryTableData> { @override final GeneratedDatabase attachedDatabase; final String? _alias; - $ScoreTableTable(this.attachedDatabase, [this._alias]); + $ScoreEntryTableTable(this.attachedDatabase, [this._alias]); static const VerificationMeta _playerIdMeta = const VerificationMeta( 'playerId', ); @@ -2382,10 +2382,10 @@ class $ScoreTableTable extends ScoreTable String get aliasedName => _alias ?? actualTableName; @override String get actualTableName => $name; - static const String $name = 'score_table'; + static const String $name = 'score_entry_table'; @override VerificationContext validateIntegrity( - Insertable instance, { + Insertable instance, { bool isInserting = false, }) { final context = VerificationContext(); @@ -2439,9 +2439,9 @@ class $ScoreTableTable extends ScoreTable @override Set get $primaryKey => {playerId, matchId, roundNumber}; @override - ScoreTableData map(Map data, {String? tablePrefix}) { + ScoreEntryTableData map(Map data, {String? tablePrefix}) { final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; - return ScoreTableData( + return ScoreEntryTableData( playerId: attachedDatabase.typeMapping.read( DriftSqlType.string, data['${effectivePrefix}player_id'], @@ -2466,18 +2466,19 @@ class $ScoreTableTable extends ScoreTable } @override - $ScoreTableTable createAlias(String alias) { - return $ScoreTableTable(attachedDatabase, alias); + $ScoreEntryTableTable createAlias(String alias) { + return $ScoreEntryTableTable(attachedDatabase, alias); } } -class ScoreTableData extends DataClass implements Insertable { +class ScoreEntryTableData extends DataClass + implements Insertable { final String playerId; final String matchId; final int roundNumber; final int score; final int change; - const ScoreTableData({ + const ScoreEntryTableData({ required this.playerId, required this.matchId, required this.roundNumber, @@ -2495,8 +2496,8 @@ class ScoreTableData extends DataClass implements Insertable { return map; } - ScoreTableCompanion toCompanion(bool nullToAbsent) { - return ScoreTableCompanion( + ScoreEntryTableCompanion toCompanion(bool nullToAbsent) { + return ScoreEntryTableCompanion( playerId: Value(playerId), matchId: Value(matchId), roundNumber: Value(roundNumber), @@ -2505,12 +2506,12 @@ class ScoreTableData extends DataClass implements Insertable { ); } - factory ScoreTableData.fromJson( + factory ScoreEntryTableData.fromJson( Map json, { ValueSerializer? serializer, }) { serializer ??= driftRuntimeOptions.defaultSerializer; - return ScoreTableData( + return ScoreEntryTableData( playerId: serializer.fromJson(json['playerId']), matchId: serializer.fromJson(json['matchId']), roundNumber: serializer.fromJson(json['roundNumber']), @@ -2530,21 +2531,21 @@ class ScoreTableData extends DataClass implements Insertable { }; } - ScoreTableData copyWith({ + ScoreEntryTableData copyWith({ String? playerId, String? matchId, int? roundNumber, int? score, int? change, - }) => ScoreTableData( + }) => ScoreEntryTableData( playerId: playerId ?? this.playerId, matchId: matchId ?? this.matchId, roundNumber: roundNumber ?? this.roundNumber, score: score ?? this.score, change: change ?? this.change, ); - ScoreTableData copyWithCompanion(ScoreTableCompanion data) { - return ScoreTableData( + ScoreEntryTableData copyWithCompanion(ScoreEntryTableCompanion data) { + return ScoreEntryTableData( playerId: data.playerId.present ? data.playerId.value : this.playerId, matchId: data.matchId.present ? data.matchId.value : this.matchId, roundNumber: data.roundNumber.present @@ -2557,7 +2558,7 @@ class ScoreTableData extends DataClass implements Insertable { @override String toString() { - return (StringBuffer('ScoreTableData(') + return (StringBuffer('ScoreEntryTableData(') ..write('playerId: $playerId, ') ..write('matchId: $matchId, ') ..write('roundNumber: $roundNumber, ') @@ -2573,7 +2574,7 @@ class ScoreTableData extends DataClass implements Insertable { @override bool operator ==(Object other) => identical(this, other) || - (other is ScoreTableData && + (other is ScoreEntryTableData && other.playerId == this.playerId && other.matchId == this.matchId && other.roundNumber == this.roundNumber && @@ -2581,14 +2582,14 @@ class ScoreTableData extends DataClass implements Insertable { other.change == this.change); } -class ScoreTableCompanion extends UpdateCompanion { +class ScoreEntryTableCompanion extends UpdateCompanion { final Value playerId; final Value matchId; final Value roundNumber; final Value score; final Value change; final Value rowid; - const ScoreTableCompanion({ + const ScoreEntryTableCompanion({ this.playerId = const Value.absent(), this.matchId = const Value.absent(), this.roundNumber = const Value.absent(), @@ -2596,7 +2597,7 @@ class ScoreTableCompanion extends UpdateCompanion { this.change = const Value.absent(), this.rowid = const Value.absent(), }); - ScoreTableCompanion.insert({ + ScoreEntryTableCompanion.insert({ required String playerId, required String matchId, required int roundNumber, @@ -2608,7 +2609,7 @@ class ScoreTableCompanion extends UpdateCompanion { roundNumber = Value(roundNumber), score = Value(score), change = Value(change); - static Insertable custom({ + static Insertable custom({ Expression? playerId, Expression? matchId, Expression? roundNumber, @@ -2626,7 +2627,7 @@ class ScoreTableCompanion extends UpdateCompanion { }); } - ScoreTableCompanion copyWith({ + ScoreEntryTableCompanion copyWith({ Value? playerId, Value? matchId, Value? roundNumber, @@ -2634,7 +2635,7 @@ class ScoreTableCompanion extends UpdateCompanion { Value? change, Value? rowid, }) { - return ScoreTableCompanion( + return ScoreEntryTableCompanion( playerId: playerId ?? this.playerId, matchId: matchId ?? this.matchId, roundNumber: roundNumber ?? this.roundNumber, @@ -2670,7 +2671,7 @@ class ScoreTableCompanion extends UpdateCompanion { @override String toString() { - return (StringBuffer('ScoreTableCompanion(') + return (StringBuffer('ScoreEntryTableCompanion(') ..write('playerId: $playerId, ') ..write('matchId: $matchId, ') ..write('roundNumber: $roundNumber, ') @@ -2696,7 +2697,9 @@ abstract class _$AppDatabase extends GeneratedDatabase { late final $PlayerMatchTableTable playerMatchTable = $PlayerMatchTableTable( this, ); - late final $ScoreTableTable scoreTable = $ScoreTableTable(this); + late final $ScoreEntryTableTable scoreEntryTable = $ScoreEntryTableTable( + this, + ); late final PlayerDao playerDao = PlayerDao(this as AppDatabase); late final GroupDao groupDao = GroupDao(this as AppDatabase); late final MatchDao matchDao = MatchDao(this as AppDatabase); @@ -2721,7 +2724,7 @@ abstract class _$AppDatabase extends GeneratedDatabase { playerGroupTable, teamTable, playerMatchTable, - scoreTable, + scoreEntryTable, ]; @override StreamQueryUpdateRules get streamUpdateRules => const StreamQueryUpdateRules([ @@ -2772,14 +2775,14 @@ abstract class _$AppDatabase extends GeneratedDatabase { 'player_table', limitUpdateKind: UpdateKind.delete, ), - result: [TableUpdate('score_table', kind: UpdateKind.delete)], + result: [TableUpdate('score_entry_table', kind: UpdateKind.delete)], ), WritePropagation( on: TableUpdateQuery.onTableName( 'match_table', limitUpdateKind: UpdateKind.delete, ), - result: [TableUpdate('score_table', kind: UpdateKind.delete)], + result: [TableUpdate('score_entry_table', kind: UpdateKind.delete)], ), ]); } @@ -2851,19 +2854,24 @@ final class $$PlayerTableTableReferences ); } - static MultiTypedResultKey<$ScoreTableTable, List> - _scoreTableRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( - db.scoreTable, - aliasName: $_aliasNameGenerator(db.playerTable.id, db.scoreTable.playerId), + static MultiTypedResultKey<$ScoreEntryTableTable, List> + _scoreEntryTableRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( + db.scoreEntryTable, + aliasName: $_aliasNameGenerator( + db.playerTable.id, + db.scoreEntryTable.playerId, + ), ); - $$ScoreTableTableProcessedTableManager get scoreTableRefs { - final manager = $$ScoreTableTableTableManager( + $$ScoreEntryTableTableProcessedTableManager get scoreEntryTableRefs { + final manager = $$ScoreEntryTableTableTableManager( $_db, - $_db.scoreTable, + $_db.scoreEntryTable, ).filter((f) => f.playerId.id.sqlEquals($_itemColumn('id')!)); - final cache = $_typedResult.readTableOrNull(_scoreTableRefsTable($_db)); + final cache = $_typedResult.readTableOrNull( + _scoreEntryTableRefsTable($_db), + ); return ProcessedTableManager( manager.$state.copyWith(prefetchedData: cache), ); @@ -2949,22 +2957,22 @@ class $$PlayerTableTableFilterComposer return f(composer); } - Expression scoreTableRefs( - Expression Function($$ScoreTableTableFilterComposer f) f, + Expression scoreEntryTableRefs( + Expression Function($$ScoreEntryTableTableFilterComposer f) f, ) { - final $$ScoreTableTableFilterComposer composer = $composerBuilder( + final $$ScoreEntryTableTableFilterComposer composer = $composerBuilder( composer: this, getCurrentColumn: (t) => t.id, - referencedTable: $db.scoreTable, + referencedTable: $db.scoreEntryTable, getReferencedColumn: (t) => t.playerId, builder: ( joinBuilder, { $addJoinBuilderToRootComposer, $removeJoinBuilderFromRootComposer, - }) => $$ScoreTableTableFilterComposer( + }) => $$ScoreEntryTableTableFilterComposer( $db: $db, - $table: $db.scoreTable, + $table: $db.scoreEntryTable, $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, joinBuilder: joinBuilder, $removeJoinBuilderFromRootComposer: @@ -3078,22 +3086,22 @@ class $$PlayerTableTableAnnotationComposer return f(composer); } - Expression scoreTableRefs( - Expression Function($$ScoreTableTableAnnotationComposer a) f, + Expression scoreEntryTableRefs( + Expression Function($$ScoreEntryTableTableAnnotationComposer a) f, ) { - final $$ScoreTableTableAnnotationComposer composer = $composerBuilder( + final $$ScoreEntryTableTableAnnotationComposer composer = $composerBuilder( composer: this, getCurrentColumn: (t) => t.id, - referencedTable: $db.scoreTable, + referencedTable: $db.scoreEntryTable, getReferencedColumn: (t) => t.playerId, builder: ( joinBuilder, { $addJoinBuilderToRootComposer, $removeJoinBuilderFromRootComposer, - }) => $$ScoreTableTableAnnotationComposer( + }) => $$ScoreEntryTableTableAnnotationComposer( $db: $db, - $table: $db.scoreTable, + $table: $db.scoreEntryTable, $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, joinBuilder: joinBuilder, $removeJoinBuilderFromRootComposer: @@ -3120,7 +3128,7 @@ class $$PlayerTableTableTableManager PrefetchHooks Function({ bool playerGroupTableRefs, bool playerMatchTableRefs, - bool scoreTableRefs, + bool scoreEntryTableRefs, }) > { $$PlayerTableTableTableManager(_$AppDatabase db, $PlayerTableTable table) @@ -3174,14 +3182,14 @@ class $$PlayerTableTableTableManager ({ playerGroupTableRefs = false, playerMatchTableRefs = false, - scoreTableRefs = false, + scoreEntryTableRefs = false, }) { return PrefetchHooks( db: db, explicitlyWatchedTables: [ if (playerGroupTableRefs) db.playerGroupTable, if (playerMatchTableRefs) db.playerMatchTable, - if (scoreTableRefs) db.scoreTable, + if (scoreEntryTableRefs) db.scoreEntryTable, ], addJoins: null, getPrefetchedDataCallback: (items) async { @@ -3228,21 +3236,21 @@ class $$PlayerTableTableTableManager ), typedResults: items, ), - if (scoreTableRefs) + if (scoreEntryTableRefs) await $_getPrefetchedData< PlayerTableData, $PlayerTableTable, - ScoreTableData + ScoreEntryTableData >( currentTable: table, referencedTable: $$PlayerTableTableReferences - ._scoreTableRefsTable(db), + ._scoreEntryTableRefsTable(db), managerFromTypedResult: (p0) => $$PlayerTableTableReferences( db, table, p0, - ).scoreTableRefs, + ).scoreEntryTableRefs, referencedItemsForCurrentItem: (item, referencedItems) => referencedItems.where( (e) => e.playerId == item.id, @@ -3272,7 +3280,7 @@ typedef $$PlayerTableTableProcessedTableManager = PrefetchHooks Function({ bool playerGroupTableRefs, bool playerMatchTableRefs, - bool scoreTableRefs, + bool scoreEntryTableRefs, }) >; typedef $$GroupTableTableCreateCompanionBuilder = @@ -4089,19 +4097,24 @@ final class $$MatchTableTableReferences ); } - static MultiTypedResultKey<$ScoreTableTable, List> - _scoreTableRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( - db.scoreTable, - aliasName: $_aliasNameGenerator(db.matchTable.id, db.scoreTable.matchId), + static MultiTypedResultKey<$ScoreEntryTableTable, List> + _scoreEntryTableRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( + db.scoreEntryTable, + aliasName: $_aliasNameGenerator( + db.matchTable.id, + db.scoreEntryTable.matchId, + ), ); - $$ScoreTableTableProcessedTableManager get scoreTableRefs { - final manager = $$ScoreTableTableTableManager( + $$ScoreEntryTableTableProcessedTableManager get scoreEntryTableRefs { + final manager = $$ScoreEntryTableTableTableManager( $_db, - $_db.scoreTable, + $_db.scoreEntryTable, ).filter((f) => f.matchId.id.sqlEquals($_itemColumn('id')!)); - final cache = $_typedResult.readTableOrNull(_scoreTableRefsTable($_db)); + final cache = $_typedResult.readTableOrNull( + _scoreEntryTableRefsTable($_db), + ); return ProcessedTableManager( manager.$state.copyWith(prefetchedData: cache), ); @@ -4213,22 +4226,22 @@ class $$MatchTableTableFilterComposer return f(composer); } - Expression scoreTableRefs( - Expression Function($$ScoreTableTableFilterComposer f) f, + Expression scoreEntryTableRefs( + Expression Function($$ScoreEntryTableTableFilterComposer f) f, ) { - final $$ScoreTableTableFilterComposer composer = $composerBuilder( + final $$ScoreEntryTableTableFilterComposer composer = $composerBuilder( composer: this, getCurrentColumn: (t) => t.id, - referencedTable: $db.scoreTable, + referencedTable: $db.scoreEntryTable, getReferencedColumn: (t) => t.matchId, builder: ( joinBuilder, { $addJoinBuilderToRootComposer, $removeJoinBuilderFromRootComposer, - }) => $$ScoreTableTableFilterComposer( + }) => $$ScoreEntryTableTableFilterComposer( $db: $db, - $table: $db.scoreTable, + $table: $db.scoreEntryTable, $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, joinBuilder: joinBuilder, $removeJoinBuilderFromRootComposer: @@ -4415,22 +4428,22 @@ class $$MatchTableTableAnnotationComposer return f(composer); } - Expression scoreTableRefs( - Expression Function($$ScoreTableTableAnnotationComposer a) f, + Expression scoreEntryTableRefs( + Expression Function($$ScoreEntryTableTableAnnotationComposer a) f, ) { - final $$ScoreTableTableAnnotationComposer composer = $composerBuilder( + final $$ScoreEntryTableTableAnnotationComposer composer = $composerBuilder( composer: this, getCurrentColumn: (t) => t.id, - referencedTable: $db.scoreTable, + referencedTable: $db.scoreEntryTable, getReferencedColumn: (t) => t.matchId, builder: ( joinBuilder, { $addJoinBuilderToRootComposer, $removeJoinBuilderFromRootComposer, - }) => $$ScoreTableTableAnnotationComposer( + }) => $$ScoreEntryTableTableAnnotationComposer( $db: $db, - $table: $db.scoreTable, + $table: $db.scoreEntryTable, $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, joinBuilder: joinBuilder, $removeJoinBuilderFromRootComposer: @@ -4458,7 +4471,7 @@ class $$MatchTableTableTableManager bool gameId, bool groupId, bool playerMatchTableRefs, - bool scoreTableRefs, + bool scoreEntryTableRefs, }) > { $$MatchTableTableTableManager(_$AppDatabase db, $MatchTableTable table) @@ -4525,13 +4538,13 @@ class $$MatchTableTableTableManager gameId = false, groupId = false, playerMatchTableRefs = false, - scoreTableRefs = false, + scoreEntryTableRefs = false, }) { return PrefetchHooks( db: db, explicitlyWatchedTables: [ if (playerMatchTableRefs) db.playerMatchTable, - if (scoreTableRefs) db.scoreTable, + if (scoreEntryTableRefs) db.scoreEntryTable, ], addJoins: < @@ -4603,21 +4616,21 @@ class $$MatchTableTableTableManager ), typedResults: items, ), - if (scoreTableRefs) + if (scoreEntryTableRefs) await $_getPrefetchedData< MatchTableData, $MatchTableTable, - ScoreTableData + ScoreEntryTableData >( currentTable: table, referencedTable: $$MatchTableTableReferences - ._scoreTableRefsTable(db), + ._scoreEntryTableRefsTable(db), managerFromTypedResult: (p0) => $$MatchTableTableReferences( db, table, p0, - ).scoreTableRefs, + ).scoreEntryTableRefs, referencedItemsForCurrentItem: (item, referencedItems) => referencedItems.where( (e) => e.matchId == item.id, @@ -4648,7 +4661,7 @@ typedef $$MatchTableTableProcessedTableManager = bool gameId, bool groupId, bool playerMatchTableRefs, - bool scoreTableRefs, + bool scoreEntryTableRefs, }) >; typedef $$PlayerGroupTableTableCreateCompanionBuilder = @@ -5761,8 +5774,8 @@ typedef $$PlayerMatchTableTableProcessedTableManager = PlayerMatchTableData, PrefetchHooks Function({bool playerId, bool matchId, bool teamId}) >; -typedef $$ScoreTableTableCreateCompanionBuilder = - ScoreTableCompanion Function({ +typedef $$ScoreEntryTableTableCreateCompanionBuilder = + ScoreEntryTableCompanion Function({ required String playerId, required String matchId, required int roundNumber, @@ -5770,8 +5783,8 @@ typedef $$ScoreTableTableCreateCompanionBuilder = required int change, Value rowid, }); -typedef $$ScoreTableTableUpdateCompanionBuilder = - ScoreTableCompanion Function({ +typedef $$ScoreEntryTableTableUpdateCompanionBuilder = + ScoreEntryTableCompanion Function({ Value playerId, Value matchId, Value roundNumber, @@ -5780,13 +5793,22 @@ typedef $$ScoreTableTableUpdateCompanionBuilder = Value rowid, }); -final class $$ScoreTableTableReferences - extends BaseReferences<_$AppDatabase, $ScoreTableTable, ScoreTableData> { - $$ScoreTableTableReferences(super.$_db, super.$_table, super.$_typedResult); +final class $$ScoreEntryTableTableReferences + extends + BaseReferences< + _$AppDatabase, + $ScoreEntryTableTable, + ScoreEntryTableData + > { + $$ScoreEntryTableTableReferences( + super.$_db, + super.$_table, + super.$_typedResult, + ); static $PlayerTableTable _playerIdTable(_$AppDatabase db) => db.playerTable.createAlias( - $_aliasNameGenerator(db.scoreTable.playerId, db.playerTable.id), + $_aliasNameGenerator(db.scoreEntryTable.playerId, db.playerTable.id), ); $$PlayerTableTableProcessedTableManager get playerId { @@ -5805,7 +5827,7 @@ final class $$ScoreTableTableReferences static $MatchTableTable _matchIdTable(_$AppDatabase db) => db.matchTable.createAlias( - $_aliasNameGenerator(db.scoreTable.matchId, db.matchTable.id), + $_aliasNameGenerator(db.scoreEntryTable.matchId, db.matchTable.id), ); $$MatchTableTableProcessedTableManager get matchId { @@ -5823,9 +5845,9 @@ final class $$ScoreTableTableReferences } } -class $$ScoreTableTableFilterComposer - extends Composer<_$AppDatabase, $ScoreTableTable> { - $$ScoreTableTableFilterComposer({ +class $$ScoreEntryTableTableFilterComposer + extends Composer<_$AppDatabase, $ScoreEntryTableTable> { + $$ScoreEntryTableTableFilterComposer({ required super.$db, required super.$table, super.joinBuilder, @@ -5894,9 +5916,9 @@ class $$ScoreTableTableFilterComposer } } -class $$ScoreTableTableOrderingComposer - extends Composer<_$AppDatabase, $ScoreTableTable> { - $$ScoreTableTableOrderingComposer({ +class $$ScoreEntryTableTableOrderingComposer + extends Composer<_$AppDatabase, $ScoreEntryTableTable> { + $$ScoreEntryTableTableOrderingComposer({ required super.$db, required super.$table, super.joinBuilder, @@ -5965,9 +5987,9 @@ class $$ScoreTableTableOrderingComposer } } -class $$ScoreTableTableAnnotationComposer - extends Composer<_$AppDatabase, $ScoreTableTable> { - $$ScoreTableTableAnnotationComposer({ +class $$ScoreEntryTableTableAnnotationComposer + extends Composer<_$AppDatabase, $ScoreEntryTableTable> { + $$ScoreEntryTableTableAnnotationComposer({ required super.$db, required super.$table, super.joinBuilder, @@ -6032,32 +6054,34 @@ class $$ScoreTableTableAnnotationComposer } } -class $$ScoreTableTableTableManager +class $$ScoreEntryTableTableTableManager extends RootTableManager< _$AppDatabase, - $ScoreTableTable, - ScoreTableData, - $$ScoreTableTableFilterComposer, - $$ScoreTableTableOrderingComposer, - $$ScoreTableTableAnnotationComposer, - $$ScoreTableTableCreateCompanionBuilder, - $$ScoreTableTableUpdateCompanionBuilder, - (ScoreTableData, $$ScoreTableTableReferences), - ScoreTableData, + $ScoreEntryTableTable, + ScoreEntryTableData, + $$ScoreEntryTableTableFilterComposer, + $$ScoreEntryTableTableOrderingComposer, + $$ScoreEntryTableTableAnnotationComposer, + $$ScoreEntryTableTableCreateCompanionBuilder, + $$ScoreEntryTableTableUpdateCompanionBuilder, + (ScoreEntryTableData, $$ScoreEntryTableTableReferences), + ScoreEntryTableData, PrefetchHooks Function({bool playerId, bool matchId}) > { - $$ScoreTableTableTableManager(_$AppDatabase db, $ScoreTableTable table) - : super( + $$ScoreEntryTableTableTableManager( + _$AppDatabase db, + $ScoreEntryTableTable table, + ) : super( TableManagerState( db: db, table: table, createFilteringComposer: () => - $$ScoreTableTableFilterComposer($db: db, $table: table), + $$ScoreEntryTableTableFilterComposer($db: db, $table: table), createOrderingComposer: () => - $$ScoreTableTableOrderingComposer($db: db, $table: table), + $$ScoreEntryTableTableOrderingComposer($db: db, $table: table), createComputedFieldComposer: () => - $$ScoreTableTableAnnotationComposer($db: db, $table: table), + $$ScoreEntryTableTableAnnotationComposer($db: db, $table: table), updateCompanionCallback: ({ Value playerId = const Value.absent(), @@ -6066,7 +6090,7 @@ class $$ScoreTableTableTableManager Value score = const Value.absent(), Value change = const Value.absent(), Value rowid = const Value.absent(), - }) => ScoreTableCompanion( + }) => ScoreEntryTableCompanion( playerId: playerId, matchId: matchId, roundNumber: roundNumber, @@ -6082,7 +6106,7 @@ class $$ScoreTableTableTableManager required int score, required int change, Value rowid = const Value.absent(), - }) => ScoreTableCompanion.insert( + }) => ScoreEntryTableCompanion.insert( playerId: playerId, matchId: matchId, roundNumber: roundNumber, @@ -6094,7 +6118,7 @@ class $$ScoreTableTableTableManager .map( (e) => ( e.readTable(table), - $$ScoreTableTableReferences(db, table, e), + $$ScoreEntryTableTableReferences(db, table, e), ), ) .toList(), @@ -6123,11 +6147,13 @@ class $$ScoreTableTableTableManager state.withJoin( currentTable: table, currentColumn: table.playerId, - referencedTable: $$ScoreTableTableReferences - ._playerIdTable(db), - referencedColumn: $$ScoreTableTableReferences - ._playerIdTable(db) - .id, + referencedTable: + $$ScoreEntryTableTableReferences + ._playerIdTable(db), + referencedColumn: + $$ScoreEntryTableTableReferences + ._playerIdTable(db) + .id, ) as T; } @@ -6136,11 +6162,13 @@ class $$ScoreTableTableTableManager state.withJoin( currentTable: table, currentColumn: table.matchId, - referencedTable: $$ScoreTableTableReferences - ._matchIdTable(db), - referencedColumn: $$ScoreTableTableReferences - ._matchIdTable(db) - .id, + referencedTable: + $$ScoreEntryTableTableReferences + ._matchIdTable(db), + referencedColumn: + $$ScoreEntryTableTableReferences + ._matchIdTable(db) + .id, ) as T; } @@ -6156,18 +6184,18 @@ class $$ScoreTableTableTableManager ); } -typedef $$ScoreTableTableProcessedTableManager = +typedef $$ScoreEntryTableTableProcessedTableManager = ProcessedTableManager< _$AppDatabase, - $ScoreTableTable, - ScoreTableData, - $$ScoreTableTableFilterComposer, - $$ScoreTableTableOrderingComposer, - $$ScoreTableTableAnnotationComposer, - $$ScoreTableTableCreateCompanionBuilder, - $$ScoreTableTableUpdateCompanionBuilder, - (ScoreTableData, $$ScoreTableTableReferences), - ScoreTableData, + $ScoreEntryTableTable, + ScoreEntryTableData, + $$ScoreEntryTableTableFilterComposer, + $$ScoreEntryTableTableOrderingComposer, + $$ScoreEntryTableTableAnnotationComposer, + $$ScoreEntryTableTableCreateCompanionBuilder, + $$ScoreEntryTableTableUpdateCompanionBuilder, + (ScoreEntryTableData, $$ScoreEntryTableTableReferences), + ScoreEntryTableData, PrefetchHooks Function({bool playerId, bool matchId}) >; @@ -6188,6 +6216,6 @@ class $AppDatabaseManager { $$TeamTableTableTableManager(_db, _db.teamTable); $$PlayerMatchTableTableTableManager get playerMatchTable => $$PlayerMatchTableTableTableManager(_db, _db.playerMatchTable); - $$ScoreTableTableTableManager get scoreTable => - $$ScoreTableTableTableManager(_db, _db.scoreTable); + $$ScoreEntryTableTableTableManager get scoreEntryTable => + $$ScoreEntryTableTableTableManager(_db, _db.scoreEntryTable); } diff --git a/lib/data/db/tables/score_table.dart b/lib/data/db/tables/score_entry_table.dart similarity index 93% rename from lib/data/db/tables/score_table.dart rename to lib/data/db/tables/score_entry_table.dart index 56c036e..7852125 100644 --- a/lib/data/db/tables/score_table.dart +++ b/lib/data/db/tables/score_entry_table.dart @@ -2,7 +2,7 @@ import 'package:drift/drift.dart'; import 'package:tallee/data/db/tables/match_table.dart'; import 'package:tallee/data/db/tables/player_table.dart'; -class ScoreTable extends Table { +class ScoreEntryTable extends Table { TextColumn get playerId => text().references(PlayerTable, #id, onDelete: KeyAction.cascade)(); TextColumn get matchId => diff --git a/lib/data/models/match.dart b/lib/data/models/match.dart index 49d7a56..a6d91c7 100644 --- a/lib/data/models/match.dart +++ b/lib/data/models/match.dart @@ -3,7 +3,7 @@ import 'package:tallee/core/enums.dart'; import 'package:tallee/data/models/game.dart'; import 'package:tallee/data/models/group.dart'; import 'package:tallee/data/models/player.dart'; -import 'package:tallee/data/models/score.dart'; +import 'package:tallee/data/models/score_entry.dart'; import 'package:uuid/uuid.dart'; class Match { @@ -15,7 +15,7 @@ class Match { final Group? group; final List players; final String notes; - Map> scores; + Map> scores; Player? winner; Match({ @@ -27,7 +27,7 @@ class Match { this.group, this.players = const [], this.notes = '', - Map>? scores, + Map>? scores, this.winner, }) : id = id ?? const Uuid().v4(), createdAt = createdAt ?? clock.now(), diff --git a/lib/data/models/score.dart b/lib/data/models/score.dart deleted file mode 100644 index 3fabfaf..0000000 --- a/lib/data/models/score.dart +++ /dev/null @@ -1,18 +0,0 @@ -class Score { - final int roundNumber; - int score = 0; - int change = 0; - - Score({required this.roundNumber, required this.score, required this.change}); - - Score.fromJson(Map json) - : roundNumber = json['roundNumber'], - score = json['score'], - change = json['change']; - - Map toJson() => { - 'roundNumber': roundNumber, - 'score': score, - 'change': change, - }; -} diff --git a/lib/data/models/score_entry.dart b/lib/data/models/score_entry.dart new file mode 100644 index 0000000..0f8a8c3 --- /dev/null +++ b/lib/data/models/score_entry.dart @@ -0,0 +1,22 @@ +class ScoreEntry { + int roundNumber = 0; + final int score; + final int change; + + ScoreEntry({ + required this.roundNumber, + required this.score, + required this.change, + }); + + ScoreEntry.fromJson(Map json) + : roundNumber = json['roundNumber'], + score = json['score'], + change = json['change']; + + Map toJson() => { + 'roundNumber': roundNumber, + 'score': score, + 'change': change, + }; +} diff --git a/test/db_tests/relationships/player_match_test.dart b/test/db_tests/relationships/player_match_test.dart index 67aa700..3db48de 100644 --- a/test/db_tests/relationships/player_match_test.dart +++ b/test/db_tests/relationships/player_match_test.dart @@ -267,21 +267,6 @@ void main() { expect(players, isNull); }); - test( - 'updatePlayerScore returns false for non-existent player-match', - () async { - await database.matchDao.addMatch(match: testMatchOnlyGroup); - - final updated = await database.scoreDao.updateScore( - matchId: testMatchOnlyGroup.id, - playerId: 'non-existent-player-id', - newScore: 50, - ); - - expect(updated, false); - }, - ); - test('Adding player with teamId works correctly', () async { await database.matchDao.addMatch(match: testMatchOnlyGroup); await database.teamDao.addTeam(team: testTeam1); diff --git a/test/db_tests/values/score_test.dart b/test/db_tests/values/score_test.dart index f2aeaeb..0fd4993 100644 --- a/test/db_tests/values/score_test.dart +++ b/test/db_tests/values/score_test.dart @@ -7,7 +7,7 @@ import 'package:tallee/data/db/database.dart'; import 'package:tallee/data/models/game.dart'; import 'package:tallee/data/models/match.dart'; import 'package:tallee/data/models/player.dart'; -import 'package:tallee/data/models/score.dart'; +import 'package:tallee/data/models/score_entry.dart'; void main() { late AppDatabase database; @@ -69,12 +69,11 @@ void main() { group('Score Tests', () { group('Adding and Fetching scores', () { test('Single Score', () async { + ScoreEntry entry = ScoreEntry(roundNumber: 1, score: 10, change: 10); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: entry, ); final score = await database.scoreDao.getScore( @@ -91,13 +90,13 @@ void main() { test('Multiple Scores', () async { final entryList = [ - Score(roundNumber: 1, score: 5, change: 5), - Score(roundNumber: 2, score: 12, change: 7), - Score(roundNumber: 3, score: 18, change: 6), + ScoreEntry(roundNumber: 1, score: 5, change: 5), + ScoreEntry(roundNumber: 2, score: 12, change: 7), + ScoreEntry(roundNumber: 3, score: 18, change: 6), ]; await database.scoreDao.addScoresAsList( - scores: entryList, + entrys: entryList, playerId: testPlayer1.id, matchId: testMatch1.id, ); @@ -120,12 +119,11 @@ void main() { group('Undesirable values', () { test('Score & Round can have negative values', () async { + ScoreEntry entry = ScoreEntry(roundNumber: -2, score: -10, change: -10); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: -2, - score: -10, - change: -10, + entry: entry, ); final score = await database.scoreDao.getScore( @@ -141,12 +139,11 @@ void main() { }); test('Score & Round can have zero values', () async { + ScoreEntry entry = ScoreEntry(roundNumber: 0, score: 0, change: 0); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 0, - score: 0, - change: 0, + entry: entry, ); final score = await database.scoreDao.getScore( @@ -185,20 +182,17 @@ void main() { }); test('Getting score for a non-match player returns null', () async { + ScoreEntry entry = ScoreEntry(roundNumber: 1, score: 10, change: 10); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: entry, ); await database.scoreDao.addScore( playerId: testPlayer3.id, matchId: testMatch2.id, - roundNumber: 1, - score: 10, - change: 10, + entry: entry, ); var score = await database.scoreDao.getScore( @@ -213,26 +207,23 @@ void main() { group('Scores in matches', () { test('getAllMatchScores()', () async { + ScoreEntry entry1 = ScoreEntry(roundNumber: 1, score: 10, change: 10); + ScoreEntry entry2 = ScoreEntry(roundNumber: 1, score: 20, change: 20); + ScoreEntry entry3 = ScoreEntry(roundNumber: 2, score: 25, change: 15); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: entry1, ); await database.scoreDao.addScore( playerId: testPlayer2.id, matchId: testMatch1.id, - roundNumber: 1, - score: 20, - change: 20, + entry: entry2, ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 2, - score: 25, - change: 15, + entry: entry3, ); final scores = await database.scoreDao.getAllMatchScores( @@ -253,26 +244,18 @@ void main() { }); test('getAllPlayerScoresInMatch()', () async { - await database.scoreDao.addScore( + ScoreEntry entry1 = ScoreEntry(roundNumber: 1, score: 10, change: 10); + ScoreEntry entry2 = ScoreEntry(roundNumber: 2, score: 25, change: 15); + ScoreEntry entry3 = ScoreEntry(roundNumber: 1, score: 30, change: 30); + await database.scoreDao.addScoresAsList( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, - ); - await database.scoreDao.addScore( - playerId: testPlayer1.id, - matchId: testMatch1.id, - roundNumber: 2, - score: 25, - change: 15, + entrys: [entry1, entry2], ); await database.scoreDao.addScore( playerId: testPlayer2.id, matchId: testMatch1.id, - roundNumber: 1, - score: 30, - change: 30, + entry: entry3, ); final playerScores = await database.scoreDao.getAllPlayerScoresInMatch( @@ -299,19 +282,17 @@ void main() { }); test('Scores are isolated across different matches', () async { + ScoreEntry entry1 = ScoreEntry(roundNumber: 1, score: 10, change: 10); + ScoreEntry entry2 = ScoreEntry(roundNumber: 1, score: 50, change: 50); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: entry1, ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch2.id, - roundNumber: 1, - score: 50, - change: 50, + entry: entry2, ); final match1Scores = await database.scoreDao.getAllPlayerScoresInMatch( @@ -336,28 +317,24 @@ void main() { group('Updating scores', () { test('updateScore()', () async { + ScoreEntry entry1 = ScoreEntry(roundNumber: 1, score: 10, change: 10); + ScoreEntry entry2 = ScoreEntry(roundNumber: 2, score: 15, change: 5); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: entry1, ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 2, - score: 15, - change: 5, + entry: entry2, ); final updated = await database.scoreDao.updateScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 2, - newScore: 50, - newChange: 40, + newEntry: ScoreEntry(roundNumber: 2, score: 50, change: 40), ); expect(updated, true); @@ -377,9 +354,7 @@ void main() { final updated = await database.scoreDao.updateScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - newScore: 20, - newChange: 20, + newEntry: ScoreEntry(roundNumber: 1, score: 20, change: 20), ); expect(updated, false); @@ -391,9 +366,7 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 10, change: 10), ); final deleted = await database.scoreDao.deleteScore( @@ -427,23 +400,17 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 10, change: 10), ); await database.scoreDao.addScore( playerId: testPlayer2.id, matchId: testMatch1.id, - roundNumber: 1, - score: 20, - change: 20, + entry: ScoreEntry(roundNumber: 1, score: 20, change: 20), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch2.id, - roundNumber: 1, - score: 15, - change: 15, + entry: ScoreEntry(roundNumber: 1, score: 15, change: 15), ); final deleted = await database.scoreDao.deleteAllScoresForMatch( @@ -467,25 +434,19 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 10, change: 10), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 2, - score: 15, - change: 5, + entry: ScoreEntry(roundNumber: 2, score: 15, change: 5), ); await database.scoreDao.addScore( playerId: testPlayer2.id, matchId: testMatch1.id, - roundNumber: 1, - score: 6, - change: 6, + entry: ScoreEntry(roundNumber: 1, score: 6, change: 6), ); final deleted = await database.scoreDao.deleteAllScoresForPlayerInMatch( @@ -519,9 +480,7 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 10, change: 10), ); latestRound = await database.scoreDao.getLatestRoundNumber( @@ -532,9 +491,7 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 5, - score: 50, - change: 40, + entry: ScoreEntry(roundNumber: 5, score: 50, change: 40), ); latestRound = await database.scoreDao.getLatestRoundNumber( @@ -547,23 +504,17 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 10, change: 10), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 5, - score: 50, - change: 40, + entry: ScoreEntry(roundNumber: 5, score: 50, change: 40), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 3, - score: 30, - change: 20, + entry: ScoreEntry(roundNumber: 3, score: 30, change: 20), ); final latestRound = await database.scoreDao.getLatestRoundNumber( @@ -583,23 +534,17 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 10, change: 10), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 2, - score: 25, - change: 15, + entry: ScoreEntry(roundNumber: 2, score: 25, change: 15), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 3, - score: 40, - change: 15, + entry: ScoreEntry(roundNumber: 3, score: 40, change: 15), ); totalScore = await database.scoreDao.getTotalScoreForPlayer( @@ -613,23 +558,17 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 2, - score: 25, - change: 25, + entry: ScoreEntry(roundNumber: 2, score: 25, change: 25), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 25, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 25, change: 10), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 3, - score: 25, - change: 25, + entry: ScoreEntry(roundNumber: 3, score: 25, change: 25), ); final totalScore = await database.scoreDao.getTotalScoreForPlayer( @@ -645,16 +584,12 @@ void main() { await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 10, - change: 10, + entry: ScoreEntry(roundNumber: 1, score: 10, change: 10), ); await database.scoreDao.addScore( playerId: testPlayer1.id, matchId: testMatch1.id, - roundNumber: 1, - score: 20, - change: 20, + entry: ScoreEntry(roundNumber: 1, score: 20, change: 20), ); final score = await database.scoreDao.getScore( diff --git a/test/services/data_transfer_service_test.dart b/test/services/data_transfer_service_test.dart index 7596a05..bfbb09f 100644 --- a/test/services/data_transfer_service_test.dart +++ b/test/services/data_transfer_service_test.dart @@ -12,7 +12,7 @@ import 'package:tallee/data/models/game.dart'; import 'package:tallee/data/models/group.dart'; import 'package:tallee/data/models/match.dart'; import 'package:tallee/data/models/player.dart'; -import 'package:tallee/data/models/score.dart'; +import 'package:tallee/data/models/score_entry.dart'; import 'package:tallee/data/models/team.dart'; import 'package:tallee/services/data_transfer_service.dart'; @@ -65,12 +65,12 @@ void main() { notes: 'Test notes', scores: { testPlayer1.id: [ - Score(roundNumber: 1, score: 10, change: 10), - Score(roundNumber: 2, score: 20, change: 10), + ScoreEntry(roundNumber: 1, score: 10, change: 10), + ScoreEntry(roundNumber: 2, score: 20, change: 10), ], testPlayer2.id: [ - Score(roundNumber: 1, score: 15, change: 15), - Score(roundNumber: 2, score: 25, change: 10), + ScoreEntry(roundNumber: 1, score: 15, change: 15), + ScoreEntry(roundNumber: 2, score: 25, change: 10), ], }, ); @@ -306,12 +306,12 @@ void main() { (playerId, scoreList) => MapEntry( playerId, (scoreList as List) - .map((s) => Score.fromJson(s as Map)) + .map((s) => ScoreEntry.fromJson(s as Map)) .toList(), ), ); - expect(scores, isA>>()); + expect(scores, isA>>()); /* Player 1 scores */ // General structure