add createdAt column to game, group and player tables and DAOs

This commit is contained in:
2025-11-18 23:47:45 +01:00
parent 8cc898cad6
commit 2ee8edcf9b
6 changed files with 46 additions and 11 deletions

View File

@@ -15,7 +15,11 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
Future<List<Game>> getAllGames() async { Future<List<Game>> getAllGames() async {
final query = select(gameTable); final query = select(gameTable);
final result = await query.get(); final result = await query.get();
return result.map((row) => Game(id: row.id, name: row.name)).toList(); return result
.map(
(row) => Game(id: row.id, name: row.name, createdAt: row.createdAt),
)
.toList();
} }
/// Retrieves a [Game] by its [gameId]. /// Retrieves a [Game] by its [gameId].
@@ -38,6 +42,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
players: players, players: players,
group: group, group: group,
winner: result.winnerId, winner: result.winnerId,
createdAt: result.createdAt,
); );
} }
@@ -58,6 +63,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
id: game.id, id: game.id,
name: game.name, name: game.name,
winnerId: game.winner, winnerId: game.winner,
createdAt: game.createdAt,
), ),
mode: InsertMode.insertOrReplace, mode: InsertMode.insertOrReplace,
); );

View File

@@ -19,7 +19,12 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
final members = await db.playerGroupDao.getPlayersOfGroupById( final members = await db.playerGroupDao.getPlayersOfGroupById(
groupId: groupData.id, groupId: groupData.id,
); );
return Group(id: groupData.id, name: groupData.name, members: members); return Group(
id: groupData.id,
name: groupData.name,
members: members,
createdAt: groupData.createdAt,
);
}), }),
); );
} }
@@ -33,7 +38,12 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
groupId: groupId, groupId: groupId,
); );
return Group(id: result.id, name: result.name, members: members); return Group(
id: result.id,
name: result.name,
members: members,
createdAt: result.createdAt,
);
} }
/// Adds a new group with the given [id] and [name] to the database. /// Adds a new group with the given [id] and [name] to the database.
@@ -41,9 +51,13 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
Future<bool> addGroup({required Group group}) async { Future<bool> addGroup({required Group group}) async {
if (!await groupExists(groupId: group.id)) { if (!await groupExists(groupId: group.id)) {
await db.transaction(() async { await db.transaction(() async {
await into( await into(groupTable).insert(
groupTable, GroupTableCompanion.insert(
).insert(GroupTableCompanion.insert(id: group.id, name: group.name)); id: group.id,
name: group.name,
createdAt: group.createdAt,
),
);
await db.batch( await db.batch(
(b) => b.insertAll( (b) => b.insertAll(
db.playerGroupTable, db.playerGroupTable,

View File

@@ -13,14 +13,22 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
Future<List<Player>> getAllPlayers() async { Future<List<Player>> getAllPlayers() async {
final query = select(playerTable); final query = select(playerTable);
final result = await query.get(); final result = await query.get();
return result.map((row) => Player(id: row.id, name: row.name)).toList(); return result
.map(
(row) => Player(id: row.id, name: row.name, createdAt: row.createdAt),
)
.toList();
} }
/// Retrieves a [Player] by their [id]. /// Retrieves a [Player] by their [id].
Future<Player> getPlayerById({required String playerId}) async { Future<Player> getPlayerById({required String playerId}) async {
final query = select(playerTable)..where((p) => p.id.equals(playerId)); final query = select(playerTable)..where((p) => p.id.equals(playerId));
final result = await query.getSingle(); final result = await query.getSingle();
return Player(id: result.id, name: result.name); return Player(
id: result.id,
name: result.name,
createdAt: result.createdAt,
);
} }
/// Adds a new [player] to the database. /// Adds a new [player] to the database.
@@ -28,9 +36,13 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
/// the new one. /// the new one.
Future<bool> addPlayer({required Player player}) async { Future<bool> addPlayer({required Player player}) async {
if (!await playerExists(playerId: player.id)) { if (!await playerExists(playerId: player.id)) {
await into( await into(playerTable).insert(
playerTable, PlayerTableCompanion.insert(
).insert(PlayerTableCompanion.insert(id: player.id, name: player.name)); id: player.id,
name: player.name,
createdAt: player.createdAt,
),
);
return true; return true;
} }
return false; return false;

View File

@@ -6,6 +6,7 @@ class GameTable extends Table {
TextColumn get name => text()(); TextColumn get name => text()();
TextColumn get winnerId => TextColumn get winnerId =>
text().references(PlayerTable, #id, onDelete: KeyAction.cascade)(); text().references(PlayerTable, #id, onDelete: KeyAction.cascade)();
DateTimeColumn get createdAt => dateTime()();
@override @override
Set<Column<Object>> get primaryKey => {id}; Set<Column<Object>> get primaryKey => {id};

View File

@@ -3,6 +3,7 @@ import 'package:drift/drift.dart';
class GroupTable extends Table { class GroupTable extends Table {
TextColumn get id => text()(); TextColumn get id => text()();
TextColumn get name => text()(); TextColumn get name => text()();
DateTimeColumn get createdAt => dateTime()();
@override @override
Set<Column<Object>> get primaryKey => {id}; Set<Column<Object>> get primaryKey => {id};

View File

@@ -3,6 +3,7 @@ import 'package:drift/drift.dart';
class PlayerTable extends Table { class PlayerTable extends Table {
TextColumn get id => text()(); TextColumn get id => text()();
TextColumn get name => text()(); TextColumn get name => text()();
DateTimeColumn get createdAt => dateTime()();
@override @override
Set<Column<Object>> get primaryKey => {id}; Set<Column<Object>> get primaryKey => {id};