Refactoring

This commit is contained in:
2026-04-12 01:59:51 +02:00
parent eeb68496d5
commit 8a312152a5
12 changed files with 317 additions and 362 deletions

View File

@@ -110,7 +110,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> 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,
);

View File

@@ -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<AppDatabase> with _$ScoreDaoMixin {
ScoreDao(super.db);
@@ -16,31 +16,29 @@ class ScoreDao extends DatabaseAccessor<AppDatabase> with _$ScoreDaoMixin {
Future<void> 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<void> addScoresAsList({
required List<Score> scores,
required List<ScoreEntry> 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<AppDatabase> with _$ScoreDaoMixin {
}
/// Retrieves the score for a specific round.
Future<Score?> getScore({
Future<ScoreEntry?> 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<AppDatabase> 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<AppDatabase> with _$ScoreDaoMixin {
}
/// Retrieves all scores for a specific match.
Future<Map<String, List<Score>>> getAllMatchScores({
Future<Map<String, List<ScoreEntry>>> 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<String, List<Score>> scoresByPlayer = {};
final Map<String, List<ScoreEntry>> 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<AppDatabase> with _$ScoreDaoMixin {
}
/// Retrieves all scores for a specific player in a match.
Future<List<Score>> getAllPlayerScoresInMatch({
Future<List<ScoreEntry>> 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<AppDatabase> with _$ScoreDaoMixin {
Future<bool> 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<AppDatabase> 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<AppDatabase> with _$ScoreDaoMixin {
}
Future<bool> 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<AppDatabase> 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<AppDatabase> with _$ScoreDaoMixin {
/// Gets the highest (latest) round number for a match.
/// Returns `null` if there are no scores for the match.
Future<int?> 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<AppDatabase> 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<AppDatabase> with _$ScoreDaoMixin {
// Retrieves the winner of a match based on the highest score.
Future<Player?> 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<AppDatabase> 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<AppDatabase> with _$ScoreDaoMixin {
/// Retrieves the looser of a match based on the score 0.
Future<Player?> 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();

View File

@@ -8,7 +8,7 @@ mixin _$ScoreDaoMixin on DatabaseAccessor<AppDatabase> {
$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,
);
}

View File

@@ -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,
),
);
}
}

View File

@@ -2307,12 +2307,12 @@ class PlayerMatchTableCompanion extends UpdateCompanion<PlayerMatchTableData> {
}
}
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<ScoreTableData> instance, {
Insertable<ScoreEntryTableData> instance, {
bool isInserting = false,
}) {
final context = VerificationContext();
@@ -2439,9 +2439,9 @@ class $ScoreTableTable extends ScoreTable
@override
Set<GeneratedColumn> get $primaryKey => {playerId, matchId, roundNumber};
@override
ScoreTableData map(Map<String, dynamic> data, {String? tablePrefix}) {
ScoreEntryTableData map(Map<String, dynamic> 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<ScoreTableData> {
class ScoreEntryTableData extends DataClass
implements Insertable<ScoreEntryTableData> {
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<ScoreTableData> {
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<ScoreTableData> {
);
}
factory ScoreTableData.fromJson(
factory ScoreEntryTableData.fromJson(
Map<String, dynamic> json, {
ValueSerializer? serializer,
}) {
serializer ??= driftRuntimeOptions.defaultSerializer;
return ScoreTableData(
return ScoreEntryTableData(
playerId: serializer.fromJson<String>(json['playerId']),
matchId: serializer.fromJson<String>(json['matchId']),
roundNumber: serializer.fromJson<int>(json['roundNumber']),
@@ -2530,21 +2531,21 @@ class ScoreTableData extends DataClass implements Insertable<ScoreTableData> {
};
}
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<ScoreTableData> {
@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<ScoreTableData> {
@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<ScoreTableData> {
other.change == this.change);
}
class ScoreTableCompanion extends UpdateCompanion<ScoreTableData> {
class ScoreEntryTableCompanion extends UpdateCompanion<ScoreEntryTableData> {
final Value<String> playerId;
final Value<String> matchId;
final Value<int> roundNumber;
final Value<int> score;
final Value<int> change;
final Value<int> 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<ScoreTableData> {
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<ScoreTableData> {
roundNumber = Value(roundNumber),
score = Value(score),
change = Value(change);
static Insertable<ScoreTableData> custom({
static Insertable<ScoreEntryTableData> custom({
Expression<String>? playerId,
Expression<String>? matchId,
Expression<int>? roundNumber,
@@ -2626,7 +2627,7 @@ class ScoreTableCompanion extends UpdateCompanion<ScoreTableData> {
});
}
ScoreTableCompanion copyWith({
ScoreEntryTableCompanion copyWith({
Value<String>? playerId,
Value<String>? matchId,
Value<int>? roundNumber,
@@ -2634,7 +2635,7 @@ class ScoreTableCompanion extends UpdateCompanion<ScoreTableData> {
Value<int>? change,
Value<int>? 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<ScoreTableData> {
@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<ScoreTableData>>
_scoreTableRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable(
db.scoreTable,
aliasName: $_aliasNameGenerator(db.playerTable.id, db.scoreTable.playerId),
static MultiTypedResultKey<$ScoreEntryTableTable, List<ScoreEntryTableData>>
_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<String>('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<bool> scoreTableRefs(
Expression<bool> Function($$ScoreTableTableFilterComposer f) f,
Expression<bool> scoreEntryTableRefs(
Expression<bool> 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<T> scoreTableRefs<T extends Object>(
Expression<T> Function($$ScoreTableTableAnnotationComposer a) f,
Expression<T> scoreEntryTableRefs<T extends Object>(
Expression<T> 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<ScoreTableData>>
_scoreTableRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable(
db.scoreTable,
aliasName: $_aliasNameGenerator(db.matchTable.id, db.scoreTable.matchId),
static MultiTypedResultKey<$ScoreEntryTableTable, List<ScoreEntryTableData>>
_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<String>('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<bool> scoreTableRefs(
Expression<bool> Function($$ScoreTableTableFilterComposer f) f,
Expression<bool> scoreEntryTableRefs(
Expression<bool> 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<T> scoreTableRefs<T extends Object>(
Expression<T> Function($$ScoreTableTableAnnotationComposer a) f,
Expression<T> scoreEntryTableRefs<T extends Object>(
Expression<T> 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<int> rowid,
});
typedef $$ScoreTableTableUpdateCompanionBuilder =
ScoreTableCompanion Function({
typedef $$ScoreEntryTableTableUpdateCompanionBuilder =
ScoreEntryTableCompanion Function({
Value<String> playerId,
Value<String> matchId,
Value<int> roundNumber,
@@ -5780,13 +5793,22 @@ typedef $$ScoreTableTableUpdateCompanionBuilder =
Value<int> 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<String> playerId = const Value.absent(),
@@ -6066,7 +6090,7 @@ class $$ScoreTableTableTableManager
Value<int> score = const Value.absent(),
Value<int> change = const Value.absent(),
Value<int> 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<int> 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);
}

View File

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

View File

@@ -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<Player> players;
final String notes;
Map<String, List<Score>> scores;
Map<String, List<ScoreEntry>> scores;
Player? winner;
Match({
@@ -27,7 +27,7 @@ class Match {
this.group,
this.players = const [],
this.notes = '',
Map<String, List<Score>>? scores,
Map<String, List<ScoreEntry>>? scores,
this.winner,
}) : id = id ?? const Uuid().v4(),
createdAt = createdAt ?? clock.now(),

View File

@@ -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<String, dynamic> json)
: roundNumber = json['roundNumber'],
score = json['score'],
change = json['change'];
Map<String, dynamic> toJson() => {
'roundNumber': roundNumber,
'score': score,
'change': change,
};
}

View File

@@ -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<String, dynamic> json)
: roundNumber = json['roundNumber'],
score = json['score'],
change = json['change'];
Map<String, dynamic> toJson() => {
'roundNumber': roundNumber,
'score': score,
'change': change,
};
}

View File

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

View File

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

View File

@@ -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<String, dynamic>))
.map((s) => ScoreEntry.fromJson(s as Map<String, dynamic>))
.toList(),
),
);
expect(scores, isA<Map<String, List<Score>>>());
expect(scores, isA<Map<String, List<ScoreEntry>>>());
/* Player 1 scores */
// General structure