Merge branch 'development' into setup/17-actions-aufsetzen
This commit is contained in:
@@ -15,7 +15,11 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
||||
Future<List<Game>> getAllGames() async {
|
||||
final query = select(gameTable);
|
||||
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].
|
||||
@@ -38,6 +42,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
||||
players: players,
|
||||
group: group,
|
||||
winner: result.winnerId,
|
||||
createdAt: result.createdAt,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -58,6 +63,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
||||
id: game.id,
|
||||
name: game.name,
|
||||
winnerId: game.winner,
|
||||
createdAt: game.createdAt,
|
||||
),
|
||||
mode: InsertMode.insertOrReplace,
|
||||
);
|
||||
|
||||
@@ -19,7 +19,12 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
||||
final members = await db.playerGroupDao.getPlayersOfGroupById(
|
||||
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,
|
||||
);
|
||||
|
||||
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.
|
||||
@@ -41,9 +51,13 @@ class GroupDao extends DatabaseAccessor<AppDatabase> with _$GroupDaoMixin {
|
||||
Future<bool> addGroup({required Group group}) async {
|
||||
if (!await groupExists(groupId: group.id)) {
|
||||
await db.transaction(() async {
|
||||
await into(
|
||||
groupTable,
|
||||
).insert(GroupTableCompanion.insert(id: group.id, name: group.name));
|
||||
await into(groupTable).insert(
|
||||
GroupTableCompanion.insert(
|
||||
id: group.id,
|
||||
name: group.name,
|
||||
createdAt: group.createdAt,
|
||||
),
|
||||
);
|
||||
await db.batch(
|
||||
(b) => b.insertAll(
|
||||
db.playerGroupTable,
|
||||
|
||||
@@ -13,14 +13,22 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
||||
Future<List<Player>> getAllPlayers() async {
|
||||
final query = select(playerTable);
|
||||
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].
|
||||
Future<Player> getPlayerById({required String playerId}) async {
|
||||
final query = select(playerTable)..where((p) => p.id.equals(playerId));
|
||||
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.
|
||||
@@ -28,9 +36,13 @@ class PlayerDao extends DatabaseAccessor<AppDatabase> with _$PlayerDaoMixin {
|
||||
/// the new one.
|
||||
Future<bool> addPlayer({required Player player}) async {
|
||||
if (!await playerExists(playerId: player.id)) {
|
||||
await into(
|
||||
playerTable,
|
||||
).insert(PlayerTableCompanion.insert(id: player.id, name: player.name));
|
||||
await into(playerTable).insert(
|
||||
PlayerTableCompanion.insert(
|
||||
id: player.id,
|
||||
name: player.name,
|
||||
createdAt: player.createdAt,
|
||||
),
|
||||
);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -27,8 +27,19 @@ class $PlayerTableTable extends PlayerTable
|
||||
type: DriftSqlType.string,
|
||||
requiredDuringInsert: true,
|
||||
);
|
||||
static const VerificationMeta _createdAtMeta = const VerificationMeta(
|
||||
'createdAt',
|
||||
);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [id, name];
|
||||
late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>(
|
||||
'created_at',
|
||||
aliasedName,
|
||||
false,
|
||||
type: DriftSqlType.dateTime,
|
||||
requiredDuringInsert: true,
|
||||
);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [id, name, createdAt];
|
||||
@override
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
@@ -54,6 +65,14 @@ class $PlayerTableTable extends PlayerTable
|
||||
} else if (isInserting) {
|
||||
context.missing(_nameMeta);
|
||||
}
|
||||
if (data.containsKey('created_at')) {
|
||||
context.handle(
|
||||
_createdAtMeta,
|
||||
createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta),
|
||||
);
|
||||
} else if (isInserting) {
|
||||
context.missing(_createdAtMeta);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
@@ -71,6 +90,10 @@ class $PlayerTableTable extends PlayerTable
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}name'],
|
||||
)!,
|
||||
createdAt: attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.dateTime,
|
||||
data['${effectivePrefix}created_at'],
|
||||
)!,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -83,17 +106,27 @@ class $PlayerTableTable extends PlayerTable
|
||||
class PlayerTableData extends DataClass implements Insertable<PlayerTableData> {
|
||||
final String id;
|
||||
final String name;
|
||||
const PlayerTableData({required this.id, required this.name});
|
||||
final DateTime createdAt;
|
||||
const PlayerTableData({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.createdAt,
|
||||
});
|
||||
@override
|
||||
Map<String, Expression> toColumns(bool nullToAbsent) {
|
||||
final map = <String, Expression>{};
|
||||
map['id'] = Variable<String>(id);
|
||||
map['name'] = Variable<String>(name);
|
||||
map['created_at'] = Variable<DateTime>(createdAt);
|
||||
return map;
|
||||
}
|
||||
|
||||
PlayerTableCompanion toCompanion(bool nullToAbsent) {
|
||||
return PlayerTableCompanion(id: Value(id), name: Value(name));
|
||||
return PlayerTableCompanion(
|
||||
id: Value(id),
|
||||
name: Value(name),
|
||||
createdAt: Value(createdAt),
|
||||
);
|
||||
}
|
||||
|
||||
factory PlayerTableData.fromJson(
|
||||
@@ -104,6 +137,7 @@ class PlayerTableData extends DataClass implements Insertable<PlayerTableData> {
|
||||
return PlayerTableData(
|
||||
id: serializer.fromJson<String>(json['id']),
|
||||
name: serializer.fromJson<String>(json['name']),
|
||||
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
@@ -112,15 +146,21 @@ class PlayerTableData extends DataClass implements Insertable<PlayerTableData> {
|
||||
return <String, dynamic>{
|
||||
'id': serializer.toJson<String>(id),
|
||||
'name': serializer.toJson<String>(name),
|
||||
'createdAt': serializer.toJson<DateTime>(createdAt),
|
||||
};
|
||||
}
|
||||
|
||||
PlayerTableData copyWith({String? id, String? name}) =>
|
||||
PlayerTableData(id: id ?? this.id, name: name ?? this.name);
|
||||
PlayerTableData copyWith({String? id, String? name, DateTime? createdAt}) =>
|
||||
PlayerTableData(
|
||||
id: id ?? this.id,
|
||||
name: name ?? this.name,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
);
|
||||
PlayerTableData copyWithCompanion(PlayerTableCompanion data) {
|
||||
return PlayerTableData(
|
||||
id: data.id.present ? data.id.value : this.id,
|
||||
name: data.name.present ? data.name.value : this.name,
|
||||
createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -128,44 +168,52 @@ class PlayerTableData extends DataClass implements Insertable<PlayerTableData> {
|
||||
String toString() {
|
||||
return (StringBuffer('PlayerTableData(')
|
||||
..write('id: $id, ')
|
||||
..write('name: $name')
|
||||
..write('name: $name, ')
|
||||
..write('createdAt: $createdAt')
|
||||
..write(')'))
|
||||
.toString();
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(id, name);
|
||||
int get hashCode => Object.hash(id, name, createdAt);
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
(other is PlayerTableData &&
|
||||
other.id == this.id &&
|
||||
other.name == this.name);
|
||||
other.name == this.name &&
|
||||
other.createdAt == this.createdAt);
|
||||
}
|
||||
|
||||
class PlayerTableCompanion extends UpdateCompanion<PlayerTableData> {
|
||||
final Value<String> id;
|
||||
final Value<String> name;
|
||||
final Value<DateTime> createdAt;
|
||||
final Value<int> rowid;
|
||||
const PlayerTableCompanion({
|
||||
this.id = const Value.absent(),
|
||||
this.name = const Value.absent(),
|
||||
this.createdAt = const Value.absent(),
|
||||
this.rowid = const Value.absent(),
|
||||
});
|
||||
PlayerTableCompanion.insert({
|
||||
required String id,
|
||||
required String name,
|
||||
required DateTime createdAt,
|
||||
this.rowid = const Value.absent(),
|
||||
}) : id = Value(id),
|
||||
name = Value(name);
|
||||
name = Value(name),
|
||||
createdAt = Value(createdAt);
|
||||
static Insertable<PlayerTableData> custom({
|
||||
Expression<String>? id,
|
||||
Expression<String>? name,
|
||||
Expression<DateTime>? createdAt,
|
||||
Expression<int>? rowid,
|
||||
}) {
|
||||
return RawValuesInsertable({
|
||||
if (id != null) 'id': id,
|
||||
if (name != null) 'name': name,
|
||||
if (createdAt != null) 'created_at': createdAt,
|
||||
if (rowid != null) 'rowid': rowid,
|
||||
});
|
||||
}
|
||||
@@ -173,11 +221,13 @@ class PlayerTableCompanion extends UpdateCompanion<PlayerTableData> {
|
||||
PlayerTableCompanion copyWith({
|
||||
Value<String>? id,
|
||||
Value<String>? name,
|
||||
Value<DateTime>? createdAt,
|
||||
Value<int>? rowid,
|
||||
}) {
|
||||
return PlayerTableCompanion(
|
||||
id: id ?? this.id,
|
||||
name: name ?? this.name,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
rowid: rowid ?? this.rowid,
|
||||
);
|
||||
}
|
||||
@@ -191,6 +241,9 @@ class PlayerTableCompanion extends UpdateCompanion<PlayerTableData> {
|
||||
if (name.present) {
|
||||
map['name'] = Variable<String>(name.value);
|
||||
}
|
||||
if (createdAt.present) {
|
||||
map['created_at'] = Variable<DateTime>(createdAt.value);
|
||||
}
|
||||
if (rowid.present) {
|
||||
map['rowid'] = Variable<int>(rowid.value);
|
||||
}
|
||||
@@ -202,6 +255,7 @@ class PlayerTableCompanion extends UpdateCompanion<PlayerTableData> {
|
||||
return (StringBuffer('PlayerTableCompanion(')
|
||||
..write('id: $id, ')
|
||||
..write('name: $name, ')
|
||||
..write('createdAt: $createdAt, ')
|
||||
..write('rowid: $rowid')
|
||||
..write(')'))
|
||||
.toString();
|
||||
@@ -232,8 +286,19 @@ class $GroupTableTable extends GroupTable
|
||||
type: DriftSqlType.string,
|
||||
requiredDuringInsert: true,
|
||||
);
|
||||
static const VerificationMeta _createdAtMeta = const VerificationMeta(
|
||||
'createdAt',
|
||||
);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [id, name];
|
||||
late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>(
|
||||
'created_at',
|
||||
aliasedName,
|
||||
false,
|
||||
type: DriftSqlType.dateTime,
|
||||
requiredDuringInsert: true,
|
||||
);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [id, name, createdAt];
|
||||
@override
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
@@ -259,6 +324,14 @@ class $GroupTableTable extends GroupTable
|
||||
} else if (isInserting) {
|
||||
context.missing(_nameMeta);
|
||||
}
|
||||
if (data.containsKey('created_at')) {
|
||||
context.handle(
|
||||
_createdAtMeta,
|
||||
createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta),
|
||||
);
|
||||
} else if (isInserting) {
|
||||
context.missing(_createdAtMeta);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
@@ -276,6 +349,10 @@ class $GroupTableTable extends GroupTable
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}name'],
|
||||
)!,
|
||||
createdAt: attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.dateTime,
|
||||
data['${effectivePrefix}created_at'],
|
||||
)!,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -288,17 +365,27 @@ class $GroupTableTable extends GroupTable
|
||||
class GroupTableData extends DataClass implements Insertable<GroupTableData> {
|
||||
final String id;
|
||||
final String name;
|
||||
const GroupTableData({required this.id, required this.name});
|
||||
final DateTime createdAt;
|
||||
const GroupTableData({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.createdAt,
|
||||
});
|
||||
@override
|
||||
Map<String, Expression> toColumns(bool nullToAbsent) {
|
||||
final map = <String, Expression>{};
|
||||
map['id'] = Variable<String>(id);
|
||||
map['name'] = Variable<String>(name);
|
||||
map['created_at'] = Variable<DateTime>(createdAt);
|
||||
return map;
|
||||
}
|
||||
|
||||
GroupTableCompanion toCompanion(bool nullToAbsent) {
|
||||
return GroupTableCompanion(id: Value(id), name: Value(name));
|
||||
return GroupTableCompanion(
|
||||
id: Value(id),
|
||||
name: Value(name),
|
||||
createdAt: Value(createdAt),
|
||||
);
|
||||
}
|
||||
|
||||
factory GroupTableData.fromJson(
|
||||
@@ -309,6 +396,7 @@ class GroupTableData extends DataClass implements Insertable<GroupTableData> {
|
||||
return GroupTableData(
|
||||
id: serializer.fromJson<String>(json['id']),
|
||||
name: serializer.fromJson<String>(json['name']),
|
||||
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
@@ -317,15 +405,21 @@ class GroupTableData extends DataClass implements Insertable<GroupTableData> {
|
||||
return <String, dynamic>{
|
||||
'id': serializer.toJson<String>(id),
|
||||
'name': serializer.toJson<String>(name),
|
||||
'createdAt': serializer.toJson<DateTime>(createdAt),
|
||||
};
|
||||
}
|
||||
|
||||
GroupTableData copyWith({String? id, String? name}) =>
|
||||
GroupTableData(id: id ?? this.id, name: name ?? this.name);
|
||||
GroupTableData copyWith({String? id, String? name, DateTime? createdAt}) =>
|
||||
GroupTableData(
|
||||
id: id ?? this.id,
|
||||
name: name ?? this.name,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
);
|
||||
GroupTableData copyWithCompanion(GroupTableCompanion data) {
|
||||
return GroupTableData(
|
||||
id: data.id.present ? data.id.value : this.id,
|
||||
name: data.name.present ? data.name.value : this.name,
|
||||
createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -333,44 +427,52 @@ class GroupTableData extends DataClass implements Insertable<GroupTableData> {
|
||||
String toString() {
|
||||
return (StringBuffer('GroupTableData(')
|
||||
..write('id: $id, ')
|
||||
..write('name: $name')
|
||||
..write('name: $name, ')
|
||||
..write('createdAt: $createdAt')
|
||||
..write(')'))
|
||||
.toString();
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(id, name);
|
||||
int get hashCode => Object.hash(id, name, createdAt);
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
(other is GroupTableData &&
|
||||
other.id == this.id &&
|
||||
other.name == this.name);
|
||||
other.name == this.name &&
|
||||
other.createdAt == this.createdAt);
|
||||
}
|
||||
|
||||
class GroupTableCompanion extends UpdateCompanion<GroupTableData> {
|
||||
final Value<String> id;
|
||||
final Value<String> name;
|
||||
final Value<DateTime> createdAt;
|
||||
final Value<int> rowid;
|
||||
const GroupTableCompanion({
|
||||
this.id = const Value.absent(),
|
||||
this.name = const Value.absent(),
|
||||
this.createdAt = const Value.absent(),
|
||||
this.rowid = const Value.absent(),
|
||||
});
|
||||
GroupTableCompanion.insert({
|
||||
required String id,
|
||||
required String name,
|
||||
required DateTime createdAt,
|
||||
this.rowid = const Value.absent(),
|
||||
}) : id = Value(id),
|
||||
name = Value(name);
|
||||
name = Value(name),
|
||||
createdAt = Value(createdAt);
|
||||
static Insertable<GroupTableData> custom({
|
||||
Expression<String>? id,
|
||||
Expression<String>? name,
|
||||
Expression<DateTime>? createdAt,
|
||||
Expression<int>? rowid,
|
||||
}) {
|
||||
return RawValuesInsertable({
|
||||
if (id != null) 'id': id,
|
||||
if (name != null) 'name': name,
|
||||
if (createdAt != null) 'created_at': createdAt,
|
||||
if (rowid != null) 'rowid': rowid,
|
||||
});
|
||||
}
|
||||
@@ -378,11 +480,13 @@ class GroupTableCompanion extends UpdateCompanion<GroupTableData> {
|
||||
GroupTableCompanion copyWith({
|
||||
Value<String>? id,
|
||||
Value<String>? name,
|
||||
Value<DateTime>? createdAt,
|
||||
Value<int>? rowid,
|
||||
}) {
|
||||
return GroupTableCompanion(
|
||||
id: id ?? this.id,
|
||||
name: name ?? this.name,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
rowid: rowid ?? this.rowid,
|
||||
);
|
||||
}
|
||||
@@ -396,6 +500,9 @@ class GroupTableCompanion extends UpdateCompanion<GroupTableData> {
|
||||
if (name.present) {
|
||||
map['name'] = Variable<String>(name.value);
|
||||
}
|
||||
if (createdAt.present) {
|
||||
map['created_at'] = Variable<DateTime>(createdAt.value);
|
||||
}
|
||||
if (rowid.present) {
|
||||
map['rowid'] = Variable<int>(rowid.value);
|
||||
}
|
||||
@@ -407,6 +514,7 @@ class GroupTableCompanion extends UpdateCompanion<GroupTableData> {
|
||||
return (StringBuffer('GroupTableCompanion(')
|
||||
..write('id: $id, ')
|
||||
..write('name: $name, ')
|
||||
..write('createdAt: $createdAt, ')
|
||||
..write('rowid: $rowid')
|
||||
..write(')'))
|
||||
.toString();
|
||||
@@ -451,8 +559,19 @@ class $GameTableTable extends GameTable
|
||||
'REFERENCES player_table (id) ON DELETE CASCADE',
|
||||
),
|
||||
);
|
||||
static const VerificationMeta _createdAtMeta = const VerificationMeta(
|
||||
'createdAt',
|
||||
);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [id, name, winnerId];
|
||||
late final GeneratedColumn<DateTime> createdAt = GeneratedColumn<DateTime>(
|
||||
'created_at',
|
||||
aliasedName,
|
||||
false,
|
||||
type: DriftSqlType.dateTime,
|
||||
requiredDuringInsert: true,
|
||||
);
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [id, name, winnerId, createdAt];
|
||||
@override
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
@@ -486,6 +605,14 @@ class $GameTableTable extends GameTable
|
||||
} else if (isInserting) {
|
||||
context.missing(_winnerIdMeta);
|
||||
}
|
||||
if (data.containsKey('created_at')) {
|
||||
context.handle(
|
||||
_createdAtMeta,
|
||||
createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta),
|
||||
);
|
||||
} else if (isInserting) {
|
||||
context.missing(_createdAtMeta);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
@@ -507,6 +634,10 @@ class $GameTableTable extends GameTable
|
||||
DriftSqlType.string,
|
||||
data['${effectivePrefix}winner_id'],
|
||||
)!,
|
||||
createdAt: attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.dateTime,
|
||||
data['${effectivePrefix}created_at'],
|
||||
)!,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -520,10 +651,12 @@ class GameTableData extends DataClass implements Insertable<GameTableData> {
|
||||
final String id;
|
||||
final String name;
|
||||
final String winnerId;
|
||||
final DateTime createdAt;
|
||||
const GameTableData({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.winnerId,
|
||||
required this.createdAt,
|
||||
});
|
||||
@override
|
||||
Map<String, Expression> toColumns(bool nullToAbsent) {
|
||||
@@ -531,6 +664,7 @@ class GameTableData extends DataClass implements Insertable<GameTableData> {
|
||||
map['id'] = Variable<String>(id);
|
||||
map['name'] = Variable<String>(name);
|
||||
map['winner_id'] = Variable<String>(winnerId);
|
||||
map['created_at'] = Variable<DateTime>(createdAt);
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -539,6 +673,7 @@ class GameTableData extends DataClass implements Insertable<GameTableData> {
|
||||
id: Value(id),
|
||||
name: Value(name),
|
||||
winnerId: Value(winnerId),
|
||||
createdAt: Value(createdAt),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -551,6 +686,7 @@ class GameTableData extends DataClass implements Insertable<GameTableData> {
|
||||
id: serializer.fromJson<String>(json['id']),
|
||||
name: serializer.fromJson<String>(json['name']),
|
||||
winnerId: serializer.fromJson<String>(json['winnerId']),
|
||||
createdAt: serializer.fromJson<DateTime>(json['createdAt']),
|
||||
);
|
||||
}
|
||||
@override
|
||||
@@ -560,20 +696,27 @@ class GameTableData extends DataClass implements Insertable<GameTableData> {
|
||||
'id': serializer.toJson<String>(id),
|
||||
'name': serializer.toJson<String>(name),
|
||||
'winnerId': serializer.toJson<String>(winnerId),
|
||||
'createdAt': serializer.toJson<DateTime>(createdAt),
|
||||
};
|
||||
}
|
||||
|
||||
GameTableData copyWith({String? id, String? name, String? winnerId}) =>
|
||||
GameTableData(
|
||||
GameTableData copyWith({
|
||||
String? id,
|
||||
String? name,
|
||||
String? winnerId,
|
||||
DateTime? createdAt,
|
||||
}) => GameTableData(
|
||||
id: id ?? this.id,
|
||||
name: name ?? this.name,
|
||||
winnerId: winnerId ?? this.winnerId,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
);
|
||||
GameTableData copyWithCompanion(GameTableCompanion data) {
|
||||
return GameTableData(
|
||||
id: data.id.present ? data.id.value : this.id,
|
||||
name: data.name.present ? data.name.value : this.name,
|
||||
winnerId: data.winnerId.present ? data.winnerId.value : this.winnerId,
|
||||
createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -582,51 +725,59 @@ class GameTableData extends DataClass implements Insertable<GameTableData> {
|
||||
return (StringBuffer('GameTableData(')
|
||||
..write('id: $id, ')
|
||||
..write('name: $name, ')
|
||||
..write('winnerId: $winnerId')
|
||||
..write('winnerId: $winnerId, ')
|
||||
..write('createdAt: $createdAt')
|
||||
..write(')'))
|
||||
.toString();
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(id, name, winnerId);
|
||||
int get hashCode => Object.hash(id, name, winnerId, createdAt);
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
(other is GameTableData &&
|
||||
other.id == this.id &&
|
||||
other.name == this.name &&
|
||||
other.winnerId == this.winnerId);
|
||||
other.winnerId == this.winnerId &&
|
||||
other.createdAt == this.createdAt);
|
||||
}
|
||||
|
||||
class GameTableCompanion extends UpdateCompanion<GameTableData> {
|
||||
final Value<String> id;
|
||||
final Value<String> name;
|
||||
final Value<String> winnerId;
|
||||
final Value<DateTime> createdAt;
|
||||
final Value<int> rowid;
|
||||
const GameTableCompanion({
|
||||
this.id = const Value.absent(),
|
||||
this.name = const Value.absent(),
|
||||
this.winnerId = const Value.absent(),
|
||||
this.createdAt = const Value.absent(),
|
||||
this.rowid = const Value.absent(),
|
||||
});
|
||||
GameTableCompanion.insert({
|
||||
required String id,
|
||||
required String name,
|
||||
required String winnerId,
|
||||
required DateTime createdAt,
|
||||
this.rowid = const Value.absent(),
|
||||
}) : id = Value(id),
|
||||
name = Value(name),
|
||||
winnerId = Value(winnerId);
|
||||
winnerId = Value(winnerId),
|
||||
createdAt = Value(createdAt);
|
||||
static Insertable<GameTableData> custom({
|
||||
Expression<String>? id,
|
||||
Expression<String>? name,
|
||||
Expression<String>? winnerId,
|
||||
Expression<DateTime>? createdAt,
|
||||
Expression<int>? rowid,
|
||||
}) {
|
||||
return RawValuesInsertable({
|
||||
if (id != null) 'id': id,
|
||||
if (name != null) 'name': name,
|
||||
if (winnerId != null) 'winner_id': winnerId,
|
||||
if (createdAt != null) 'created_at': createdAt,
|
||||
if (rowid != null) 'rowid': rowid,
|
||||
});
|
||||
}
|
||||
@@ -635,12 +786,14 @@ class GameTableCompanion extends UpdateCompanion<GameTableData> {
|
||||
Value<String>? id,
|
||||
Value<String>? name,
|
||||
Value<String>? winnerId,
|
||||
Value<DateTime>? createdAt,
|
||||
Value<int>? rowid,
|
||||
}) {
|
||||
return GameTableCompanion(
|
||||
id: id ?? this.id,
|
||||
name: name ?? this.name,
|
||||
winnerId: winnerId ?? this.winnerId,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
rowid: rowid ?? this.rowid,
|
||||
);
|
||||
}
|
||||
@@ -657,6 +810,9 @@ class GameTableCompanion extends UpdateCompanion<GameTableData> {
|
||||
if (winnerId.present) {
|
||||
map['winner_id'] = Variable<String>(winnerId.value);
|
||||
}
|
||||
if (createdAt.present) {
|
||||
map['created_at'] = Variable<DateTime>(createdAt.value);
|
||||
}
|
||||
if (rowid.present) {
|
||||
map['rowid'] = Variable<int>(rowid.value);
|
||||
}
|
||||
@@ -669,6 +825,7 @@ class GameTableCompanion extends UpdateCompanion<GameTableData> {
|
||||
..write('id: $id, ')
|
||||
..write('name: $name, ')
|
||||
..write('winnerId: $winnerId, ')
|
||||
..write('createdAt: $createdAt, ')
|
||||
..write('rowid: $rowid')
|
||||
..write(')'))
|
||||
.toString();
|
||||
@@ -1437,12 +1594,14 @@ typedef $$PlayerTableTableCreateCompanionBuilder =
|
||||
PlayerTableCompanion Function({
|
||||
required String id,
|
||||
required String name,
|
||||
required DateTime createdAt,
|
||||
Value<int> rowid,
|
||||
});
|
||||
typedef $$PlayerTableTableUpdateCompanionBuilder =
|
||||
PlayerTableCompanion Function({
|
||||
Value<String> id,
|
||||
Value<String> name,
|
||||
Value<DateTime> createdAt,
|
||||
Value<int> rowid,
|
||||
});
|
||||
|
||||
@@ -1534,6 +1693,11 @@ class $$PlayerTableTableFilterComposer
|
||||
builder: (column) => ColumnFilters(column),
|
||||
);
|
||||
|
||||
ColumnFilters<DateTime> get createdAt => $composableBuilder(
|
||||
column: $table.createdAt,
|
||||
builder: (column) => ColumnFilters(column),
|
||||
);
|
||||
|
||||
Expression<bool> gameTableRefs(
|
||||
Expression<bool> Function($$GameTableTableFilterComposer f) f,
|
||||
) {
|
||||
@@ -1628,6 +1792,11 @@ class $$PlayerTableTableOrderingComposer
|
||||
column: $table.name,
|
||||
builder: (column) => ColumnOrderings(column),
|
||||
);
|
||||
|
||||
ColumnOrderings<DateTime> get createdAt => $composableBuilder(
|
||||
column: $table.createdAt,
|
||||
builder: (column) => ColumnOrderings(column),
|
||||
);
|
||||
}
|
||||
|
||||
class $$PlayerTableTableAnnotationComposer
|
||||
@@ -1645,6 +1814,9 @@ class $$PlayerTableTableAnnotationComposer
|
||||
GeneratedColumn<String> get name =>
|
||||
$composableBuilder(column: $table.name, builder: (column) => column);
|
||||
|
||||
GeneratedColumn<DateTime> get createdAt =>
|
||||
$composableBuilder(column: $table.createdAt, builder: (column) => column);
|
||||
|
||||
Expression<T> gameTableRefs<T extends Object>(
|
||||
Expression<T> Function($$GameTableTableAnnotationComposer a) f,
|
||||
) {
|
||||
@@ -1755,15 +1927,26 @@ class $$PlayerTableTableTableManager
|
||||
({
|
||||
Value<String> id = const Value.absent(),
|
||||
Value<String> name = const Value.absent(),
|
||||
Value<DateTime> createdAt = const Value.absent(),
|
||||
Value<int> rowid = const Value.absent(),
|
||||
}) => PlayerTableCompanion(id: id, name: name, rowid: rowid),
|
||||
}) => PlayerTableCompanion(
|
||||
id: id,
|
||||
name: name,
|
||||
createdAt: createdAt,
|
||||
rowid: rowid,
|
||||
),
|
||||
createCompanionCallback:
|
||||
({
|
||||
required String id,
|
||||
required String name,
|
||||
required DateTime createdAt,
|
||||
Value<int> rowid = const Value.absent(),
|
||||
}) =>
|
||||
PlayerTableCompanion.insert(id: id, name: name, rowid: rowid),
|
||||
}) => PlayerTableCompanion.insert(
|
||||
id: id,
|
||||
name: name,
|
||||
createdAt: createdAt,
|
||||
rowid: rowid,
|
||||
),
|
||||
withReferenceMapper: (p0) => p0
|
||||
.map(
|
||||
(e) => (
|
||||
@@ -1881,12 +2064,14 @@ typedef $$GroupTableTableCreateCompanionBuilder =
|
||||
GroupTableCompanion Function({
|
||||
required String id,
|
||||
required String name,
|
||||
required DateTime createdAt,
|
||||
Value<int> rowid,
|
||||
});
|
||||
typedef $$GroupTableTableUpdateCompanionBuilder =
|
||||
GroupTableCompanion Function({
|
||||
Value<String> id,
|
||||
Value<String> name,
|
||||
Value<DateTime> createdAt,
|
||||
Value<int> rowid,
|
||||
});
|
||||
|
||||
@@ -1958,6 +2143,11 @@ class $$GroupTableTableFilterComposer
|
||||
builder: (column) => ColumnFilters(column),
|
||||
);
|
||||
|
||||
ColumnFilters<DateTime> get createdAt => $composableBuilder(
|
||||
column: $table.createdAt,
|
||||
builder: (column) => ColumnFilters(column),
|
||||
);
|
||||
|
||||
Expression<bool> playerGroupTableRefs(
|
||||
Expression<bool> Function($$PlayerGroupTableTableFilterComposer f) f,
|
||||
) {
|
||||
@@ -2027,6 +2217,11 @@ class $$GroupTableTableOrderingComposer
|
||||
column: $table.name,
|
||||
builder: (column) => ColumnOrderings(column),
|
||||
);
|
||||
|
||||
ColumnOrderings<DateTime> get createdAt => $composableBuilder(
|
||||
column: $table.createdAt,
|
||||
builder: (column) => ColumnOrderings(column),
|
||||
);
|
||||
}
|
||||
|
||||
class $$GroupTableTableAnnotationComposer
|
||||
@@ -2044,6 +2239,9 @@ class $$GroupTableTableAnnotationComposer
|
||||
GeneratedColumn<String> get name =>
|
||||
$composableBuilder(column: $table.name, builder: (column) => column);
|
||||
|
||||
GeneratedColumn<DateTime> get createdAt =>
|
||||
$composableBuilder(column: $table.createdAt, builder: (column) => column);
|
||||
|
||||
Expression<T> playerGroupTableRefs<T extends Object>(
|
||||
Expression<T> Function($$PlayerGroupTableTableAnnotationComposer a) f,
|
||||
) {
|
||||
@@ -2128,15 +2326,26 @@ class $$GroupTableTableTableManager
|
||||
({
|
||||
Value<String> id = const Value.absent(),
|
||||
Value<String> name = const Value.absent(),
|
||||
Value<DateTime> createdAt = const Value.absent(),
|
||||
Value<int> rowid = const Value.absent(),
|
||||
}) => GroupTableCompanion(id: id, name: name, rowid: rowid),
|
||||
}) => GroupTableCompanion(
|
||||
id: id,
|
||||
name: name,
|
||||
createdAt: createdAt,
|
||||
rowid: rowid,
|
||||
),
|
||||
createCompanionCallback:
|
||||
({
|
||||
required String id,
|
||||
required String name,
|
||||
required DateTime createdAt,
|
||||
Value<int> rowid = const Value.absent(),
|
||||
}) =>
|
||||
GroupTableCompanion.insert(id: id, name: name, rowid: rowid),
|
||||
}) => GroupTableCompanion.insert(
|
||||
id: id,
|
||||
name: name,
|
||||
createdAt: createdAt,
|
||||
rowid: rowid,
|
||||
),
|
||||
withReferenceMapper: (p0) => p0
|
||||
.map(
|
||||
(e) => (
|
||||
@@ -2228,6 +2437,7 @@ typedef $$GameTableTableCreateCompanionBuilder =
|
||||
required String id,
|
||||
required String name,
|
||||
required String winnerId,
|
||||
required DateTime createdAt,
|
||||
Value<int> rowid,
|
||||
});
|
||||
typedef $$GameTableTableUpdateCompanionBuilder =
|
||||
@@ -2235,6 +2445,7 @@ typedef $$GameTableTableUpdateCompanionBuilder =
|
||||
Value<String> id,
|
||||
Value<String> name,
|
||||
Value<String> winnerId,
|
||||
Value<DateTime> createdAt,
|
||||
Value<int> rowid,
|
||||
});
|
||||
|
||||
@@ -2319,6 +2530,11 @@ class $$GameTableTableFilterComposer
|
||||
builder: (column) => ColumnFilters(column),
|
||||
);
|
||||
|
||||
ColumnFilters<DateTime> get createdAt => $composableBuilder(
|
||||
column: $table.createdAt,
|
||||
builder: (column) => ColumnFilters(column),
|
||||
);
|
||||
|
||||
$$PlayerTableTableFilterComposer get winnerId {
|
||||
final $$PlayerTableTableFilterComposer composer = $composerBuilder(
|
||||
composer: this,
|
||||
@@ -2412,6 +2628,11 @@ class $$GameTableTableOrderingComposer
|
||||
builder: (column) => ColumnOrderings(column),
|
||||
);
|
||||
|
||||
ColumnOrderings<DateTime> get createdAt => $composableBuilder(
|
||||
column: $table.createdAt,
|
||||
builder: (column) => ColumnOrderings(column),
|
||||
);
|
||||
|
||||
$$PlayerTableTableOrderingComposer get winnerId {
|
||||
final $$PlayerTableTableOrderingComposer composer = $composerBuilder(
|
||||
composer: this,
|
||||
@@ -2451,6 +2672,9 @@ class $$GameTableTableAnnotationComposer
|
||||
GeneratedColumn<String> get name =>
|
||||
$composableBuilder(column: $table.name, builder: (column) => column);
|
||||
|
||||
GeneratedColumn<DateTime> get createdAt =>
|
||||
$composableBuilder(column: $table.createdAt, builder: (column) => column);
|
||||
|
||||
$$PlayerTableTableAnnotationComposer get winnerId {
|
||||
final $$PlayerTableTableAnnotationComposer composer = $composerBuilder(
|
||||
composer: this,
|
||||
@@ -2560,11 +2784,13 @@ class $$GameTableTableTableManager
|
||||
Value<String> id = const Value.absent(),
|
||||
Value<String> name = const Value.absent(),
|
||||
Value<String> winnerId = const Value.absent(),
|
||||
Value<DateTime> createdAt = const Value.absent(),
|
||||
Value<int> rowid = const Value.absent(),
|
||||
}) => GameTableCompanion(
|
||||
id: id,
|
||||
name: name,
|
||||
winnerId: winnerId,
|
||||
createdAt: createdAt,
|
||||
rowid: rowid,
|
||||
),
|
||||
createCompanionCallback:
|
||||
@@ -2572,11 +2798,13 @@ class $$GameTableTableTableManager
|
||||
required String id,
|
||||
required String name,
|
||||
required String winnerId,
|
||||
required DateTime createdAt,
|
||||
Value<int> rowid = const Value.absent(),
|
||||
}) => GameTableCompanion.insert(
|
||||
id: id,
|
||||
name: name,
|
||||
winnerId: winnerId,
|
||||
createdAt: createdAt,
|
||||
rowid: rowid,
|
||||
),
|
||||
withReferenceMapper: (p0) => p0
|
||||
|
||||
@@ -6,6 +6,7 @@ class GameTable extends Table {
|
||||
TextColumn get name => text()();
|
||||
TextColumn get winnerId =>
|
||||
text().references(PlayerTable, #id, onDelete: KeyAction.cascade)();
|
||||
DateTimeColumn get createdAt => dateTime()();
|
||||
|
||||
@override
|
||||
Set<Column<Object>> get primaryKey => {id};
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:drift/drift.dart';
|
||||
class GroupTable extends Table {
|
||||
TextColumn get id => text()();
|
||||
TextColumn get name => text()();
|
||||
DateTimeColumn get createdAt => dateTime()();
|
||||
|
||||
@override
|
||||
Set<Column<Object>> get primaryKey => {id};
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:drift/drift.dart';
|
||||
class PlayerTable extends Table {
|
||||
TextColumn get id => text()();
|
||||
TextColumn get name => text()();
|
||||
DateTimeColumn get createdAt => dateTime()();
|
||||
|
||||
@override
|
||||
Set<Column<Object>> get primaryKey => {id};
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:clock/clock.dart';
|
||||
import 'package:game_tracker/data/dto/group.dart';
|
||||
import 'package:game_tracker/data/dto/player.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
@@ -8,14 +9,17 @@ class Game {
|
||||
final List<Player>? players;
|
||||
final Group? group;
|
||||
final String winner;
|
||||
final DateTime createdAt;
|
||||
|
||||
Game({
|
||||
String? id,
|
||||
DateTime? createdAt,
|
||||
required this.name,
|
||||
this.players,
|
||||
this.group,
|
||||
this.winner = '',
|
||||
}) : id = id ?? const Uuid().v4();
|
||||
}) : id = id ?? const Uuid().v4(),
|
||||
createdAt = createdAt ?? clock.now();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:clock/clock.dart';
|
||||
import 'package:game_tracker/data/dto/player.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
@@ -5,9 +6,15 @@ class Group {
|
||||
final String id;
|
||||
final String name;
|
||||
final List<Player> members;
|
||||
final DateTime createdAt;
|
||||
|
||||
Group({String? id, required this.name, required this.members})
|
||||
: id = id ?? const Uuid().v4();
|
||||
Group({
|
||||
String? id,
|
||||
DateTime? createdAt,
|
||||
required this.name,
|
||||
required this.members,
|
||||
}) : id = id ?? const Uuid().v4(),
|
||||
createdAt = createdAt ?? clock.now();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import 'package:clock/clock.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class Player {
|
||||
final String id;
|
||||
final String name;
|
||||
final DateTime createdAt;
|
||||
|
||||
Player({String? id, required this.name}) : id = id ?? const Uuid().v4();
|
||||
Player({String? id, DateTime? createdAt, required this.name})
|
||||
: id = id ?? const Uuid().v4(),
|
||||
createdAt = createdAt ?? clock.now();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
|
||||
@@ -26,11 +26,13 @@ class CustomWidthButton extends StatelessWidget {
|
||||
|
||||
if (buttonType == ButtonType.primary) {
|
||||
textcolor = Colors.white;
|
||||
disabledTextColor = Colors.white.withValues(alpha: 0.24);
|
||||
disabledTextColor = Color.lerp(textcolor, Colors.black, 0.5)!;
|
||||
buttonBackgroundColor = CustomTheme.primaryColor;
|
||||
disabledBackgroundColor = CustomTheme.primaryColor.withValues(
|
||||
alpha: 0.24,
|
||||
);
|
||||
disabledBackgroundColor = Color.lerp(
|
||||
buttonBackgroundColor,
|
||||
Colors.black,
|
||||
0.5,
|
||||
)!;
|
||||
|
||||
return ElevatedButton(
|
||||
onPressed: onPressed,
|
||||
@@ -55,12 +57,12 @@ class CustomWidthButton extends StatelessWidget {
|
||||
);
|
||||
} else if (buttonType == ButtonType.secondary) {
|
||||
textcolor = CustomTheme.primaryColor;
|
||||
disabledTextColor = CustomTheme.primaryColor.withValues(alpha: 0.5);
|
||||
disabledTextColor = Color.lerp(textcolor, Colors.black, 0.5)!;
|
||||
buttonBackgroundColor = Colors.transparent;
|
||||
disabledBackgroundColor = Colors.transparent;
|
||||
borderSideColor = onPressed != null
|
||||
? CustomTheme.primaryColor
|
||||
: CustomTheme.primaryColor.withValues(alpha: 0.5);
|
||||
: Color.lerp(CustomTheme.primaryColor, Colors.black, 0.5)!;
|
||||
|
||||
return OutlinedButton(
|
||||
onPressed: onPressed,
|
||||
@@ -86,7 +88,11 @@ class CustomWidthButton extends StatelessWidget {
|
||||
);
|
||||
} else {
|
||||
textcolor = CustomTheme.primaryColor;
|
||||
disabledTextColor = CustomTheme.primaryColor.withValues(alpha: 0.3);
|
||||
disabledTextColor = Color.lerp(
|
||||
CustomTheme.primaryColor,
|
||||
Colors.black,
|
||||
0.5,
|
||||
)!;
|
||||
buttonBackgroundColor = Colors.transparent;
|
||||
disabledBackgroundColor = Colors.transparent;
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ dependencies:
|
||||
provider: ^6.1.5
|
||||
skeletonizer: ^2.1.0+1
|
||||
uuid: ^4.5.2
|
||||
clock: ^1.1.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:clock/clock.dart';
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:drift/native.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
@@ -15,6 +16,8 @@ void main() {
|
||||
late Player player5;
|
||||
late Group testgroup;
|
||||
late Game testgame;
|
||||
final fixedDate = DateTime(2025, 19, 11, 00, 11, 23);
|
||||
final fakeClock = Clock(() => fixedDate);
|
||||
|
||||
setUp(() {
|
||||
database = AppDatabase(
|
||||
@@ -25,18 +28,23 @@ void main() {
|
||||
),
|
||||
);
|
||||
|
||||
withClock(fakeClock, () {
|
||||
player1 = Player(name: 'Alice');
|
||||
player2 = Player(name: 'Bob');
|
||||
player3 = Player(name: 'Charlie');
|
||||
player4 = Player(name: 'Diana');
|
||||
player5 = Player(name: 'Eve');
|
||||
testgroup = Group(name: 'Test Group', members: [player1, player2, player3]);
|
||||
testgroup = Group(
|
||||
name: 'Test Group',
|
||||
members: [player1, player2, player3],
|
||||
);
|
||||
testgame = Game(
|
||||
name: 'Test Game',
|
||||
group: testgroup,
|
||||
players: [player4, player5],
|
||||
);
|
||||
});
|
||||
});
|
||||
tearDown(() async {
|
||||
await database.close();
|
||||
});
|
||||
@@ -50,6 +58,7 @@ void main() {
|
||||
expect(result.id, testgame.id);
|
||||
expect(result.name, testgame.name);
|
||||
expect(result.winner, testgame.winner);
|
||||
expect(result.createdAt, testgame.createdAt);
|
||||
|
||||
if (result.group != null) {
|
||||
expect(result.group!.members.length, testgroup.members.length);
|
||||
@@ -67,6 +76,7 @@ void main() {
|
||||
for (int i = 0; i < testgame.players!.length; i++) {
|
||||
expect(result.players![i].id, testgame.players![i].id);
|
||||
expect(result.players![i].name, testgame.players![i].name);
|
||||
expect(result.players![i].createdAt, testgame.players![i].createdAt);
|
||||
}
|
||||
} else {
|
||||
fail('Players is null');
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:clock/clock.dart';
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:drift/native.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
@@ -12,6 +13,9 @@ void main() {
|
||||
late Player player3;
|
||||
late Player player4;
|
||||
late Group testgroup;
|
||||
late Group testgroup2;
|
||||
final fixedDate = DateTime(2025, 19, 11, 00, 11, 23);
|
||||
final fakeClock = Clock(() => fixedDate);
|
||||
|
||||
setUp(() {
|
||||
database = AppDatabase(
|
||||
@@ -22,22 +26,27 @@ void main() {
|
||||
),
|
||||
);
|
||||
|
||||
withClock(fakeClock, () {
|
||||
player1 = Player(name: 'Alice');
|
||||
player2 = Player(name: 'Bob');
|
||||
player3 = Player(name: 'Charlie');
|
||||
player4 = Player(name: 'Diana');
|
||||
testgroup = Group(name: 'Test Group', members: [player1, player2, player3]);
|
||||
testgroup = Group(
|
||||
name: 'Test Group',
|
||||
members: [player1, player2, player3],
|
||||
);
|
||||
testgroup2 = Group(
|
||||
id: 'gr2',
|
||||
name: 'Second Group',
|
||||
members: [player2, player3, player4],
|
||||
);
|
||||
});
|
||||
});
|
||||
tearDown(() async {
|
||||
await database.close();
|
||||
});
|
||||
group('group tests', () {
|
||||
test('all groups get fetched correctly', () async {
|
||||
final testgroup2 = Group(
|
||||
id: 'gr2',
|
||||
name: 'Second Group',
|
||||
members: [player2, player3, player4],
|
||||
);
|
||||
await database.groupDao.addGroup(group: testgroup);
|
||||
await database.groupDao.addGroup(group: testgroup2);
|
||||
|
||||
@@ -48,11 +57,13 @@ void main() {
|
||||
expect(fetchedGroup1.name, testgroup.name);
|
||||
expect(fetchedGroup1.members.length, testgroup.members.length);
|
||||
expect(fetchedGroup1.members.elementAt(0).id, player1.id);
|
||||
expect(fetchedGroup1.members.elementAt(0).createdAt, player1.createdAt);
|
||||
|
||||
final fetchedGroup2 = allGroups.firstWhere((g) => g.id == testgroup2.id);
|
||||
expect(fetchedGroup2.name, testgroup2.name);
|
||||
expect(fetchedGroup2.members.length, testgroup2.members.length);
|
||||
expect(fetchedGroup2.members.elementAt(0).id, player2.id);
|
||||
expect(fetchedGroup2.members.elementAt(0).createdAt, player2.createdAt);
|
||||
});
|
||||
|
||||
test('group and group members gets added correctly', () async {
|
||||
@@ -64,11 +75,13 @@ void main() {
|
||||
|
||||
expect(result.id, testgroup.id);
|
||||
expect(result.name, testgroup.name);
|
||||
expect(result.createdAt, testgroup.createdAt);
|
||||
|
||||
expect(result.members.length, testgroup.members.length);
|
||||
for (int i = 0; i < testgroup.members.length; i++) {
|
||||
expect(result.members[i].id, testgroup.members[i].id);
|
||||
expect(result.members[i].name, testgroup.members[i].name);
|
||||
expect(result.members[i].createdAt, testgroup.members[i].createdAt);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -124,8 +137,6 @@ void main() {
|
||||
|
||||
expect(playerNotAdded, true);
|
||||
|
||||
expect(playerAdded, true);
|
||||
|
||||
final result = await database.groupDao.getGroupById(
|
||||
groupId: testgroup.id,
|
||||
);
|
||||
@@ -133,6 +144,7 @@ void main() {
|
||||
|
||||
final addedPlayer = result.members.firstWhere((p) => p.id == player4.id);
|
||||
expect(addedPlayer.name, player4.name);
|
||||
expect(addedPlayer.createdAt, player4.createdAt);
|
||||
});
|
||||
|
||||
test('Removing player from group works correctly', () async {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:clock/clock.dart';
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:drift/native.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
@@ -7,6 +8,9 @@ import 'package:game_tracker/data/dto/player.dart';
|
||||
void main() {
|
||||
late AppDatabase database;
|
||||
late Player testPlayer;
|
||||
late Player testPlayer2;
|
||||
final fixedDate = DateTime(2025, 19, 11, 00, 11, 23);
|
||||
final fakeClock = Clock(() => fixedDate);
|
||||
|
||||
setUp(() {
|
||||
database = AppDatabase(
|
||||
@@ -17,7 +21,10 @@ void main() {
|
||||
),
|
||||
);
|
||||
|
||||
withClock(fakeClock, () {
|
||||
testPlayer = Player(name: 'Test Player');
|
||||
testPlayer2 = Player(name: 'Second Group');
|
||||
});
|
||||
});
|
||||
tearDown(() async {
|
||||
await database.close();
|
||||
@@ -25,7 +32,6 @@ void main() {
|
||||
|
||||
group('player tests', () {
|
||||
test('all players get fetched correctly', () async {
|
||||
final testPlayer2 = Player(name: 'Second Group');
|
||||
await database.playerDao.addPlayer(player: testPlayer);
|
||||
await database.playerDao.addPlayer(player: testPlayer2);
|
||||
|
||||
@@ -36,11 +42,13 @@ void main() {
|
||||
(g) => g.id == testPlayer.id,
|
||||
);
|
||||
expect(fetchedPlayer1.name, testPlayer.name);
|
||||
expect(fetchedPlayer1.createdAt, testPlayer.createdAt);
|
||||
|
||||
final fetchedPlayer2 = allPlayers.firstWhere(
|
||||
(g) => g.id == testPlayer2.id,
|
||||
);
|
||||
expect(fetchedPlayer2.name, testPlayer2.name);
|
||||
expect(fetchedPlayer2.createdAt, testPlayer2.createdAt);
|
||||
});
|
||||
|
||||
test('players get inserted correcly ', () async {
|
||||
@@ -51,6 +59,7 @@ void main() {
|
||||
|
||||
expect(result.id, testPlayer.id);
|
||||
expect(result.name, testPlayer.name);
|
||||
expect(result.createdAt, testPlayer.createdAt);
|
||||
});
|
||||
|
||||
test('players get deleted correcly ', () async {
|
||||
|
||||
Reference in New Issue
Block a user