ruleset is now a required game enum parameter
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m1s
Pull Request Pipeline / lint (pull_request) Successful in 2m7s

This commit is contained in:
gelbeinhalb
2026-01-23 11:54:37 +01:00
parent 118b316a35
commit b0cb385756
15 changed files with 94 additions and 40 deletions

View File

@@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
import 'package:game_tracker/data/db/database.dart';
import 'package:game_tracker/data/db/tables/game_table.dart';
import 'package:game_tracker/data/dto/game.dart';
import 'package:game_tracker/core/enums.dart';
part 'game_dao.g.dart';
@@ -18,7 +19,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
(row) => Game(
id: row.id,
name: row.name,
ruleset: row.ruleset,
ruleset: Ruleset.values.firstWhere((e) => e.name == row.ruleset),
description: row.description,
color: row.color,
icon: row.icon,
@@ -35,7 +36,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
return Game(
id: result.id,
name: result.name,
ruleset: result.ruleset,
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
description: result.description,
color: result.color,
icon: result.icon,
@@ -52,7 +53,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
GameTableCompanion.insert(
id: game.id,
name: game.name,
ruleset: game.ruleset ?? '',
ruleset: game.ruleset.name,
description: game.description,
color: game.color,
icon: Value(game.icon),
@@ -78,7 +79,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
(game) => GameTableCompanion.insert(
id: game.id,
name: game.name,
ruleset: game.ruleset ?? '',
ruleset: game.ruleset.name,
description: game.description,
color: game.color,
icon: Value(game.icon),
@@ -122,10 +123,10 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
/// Updates the ruleset of the game with the given [gameId].
Future<void> updateGameRuleset({
required String gameId,
required String newRuleset,
required Ruleset newRuleset,
}) async {
await (update(gameTable)..where((g) => g.id.equals(gameId))).write(
GameTableCompanion(ruleset: Value(newRuleset)),
GameTableCompanion(ruleset: Value(newRuleset.name)),
);
}

View File

@@ -127,7 +127,7 @@ class MatchDao extends DatabaseAccessor<AppDatabase> with _$MatchDaoMixin {
(game) => GameTableCompanion.insert(
id: game.id,
name: game.name,
ruleset: game.ruleset ?? '',
ruleset: game.ruleset.name,
description: game.description,
color: game.color,
icon: Value(game.icon),

View File

@@ -1,11 +1,12 @@
import 'package:clock/clock.dart';
import 'package:uuid/uuid.dart';
import 'package:game_tracker/core/enums.dart';
class Game {
final String id;
final DateTime createdAt;
final String name;
final String? ruleset;
final Ruleset ruleset;
final String description;
final String color;
final String? icon;
@@ -14,7 +15,7 @@ class Game {
String? id,
DateTime? createdAt,
required this.name,
this.ruleset,
required this.ruleset,
required this.description,
required this.color,
this.icon,
@@ -31,7 +32,7 @@ class Game {
: id = json['id'],
createdAt = DateTime.parse(json['createdAt']),
name = json['name'],
ruleset = json['ruleset'],
ruleset = Ruleset.values.firstWhere((e) => e.name == json['ruleset']),
description = json['description'],
color = json['color'],
icon = json['icon'];
@@ -41,7 +42,7 @@ class Game {
'id': id,
'createdAt': createdAt.toIso8601String(),
'name': name,
'ruleset': ruleset,
'ruleset': ruleset.name,
'description': description,
'color': color,
'icon': icon,