5 Commits

Author SHA1 Message Date
gelbeinhalb
b9b72cdd50 add pair
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m11s
Pull Request Pipeline / test (pull_request) Failing after 2m30s
2026-01-16 11:10:42 +01:00
gelbeinhalb
4a56df7f8f add team 2026-01-16 11:09:18 +01:00
gelbeinhalb
f2a12265ad add createdAt to team 2026-01-16 11:09:08 +01:00
gelbeinhalb
c82d72544e add description to player 2026-01-16 11:04:54 +01:00
gelbeinhalb
072021bd4c update match class 2026-01-16 10:50:03 +01:00
5 changed files with 83 additions and 17 deletions

View File

@@ -3,6 +3,7 @@ import 'package:drift/drift.dart';
class TeamTable extends Table { class TeamTable 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

@@ -1,4 +1,5 @@
import 'package:clock/clock.dart'; import 'package:clock/clock.dart';
import 'package:game_tracker/data/dto/game.dart';
import 'package:game_tracker/data/dto/group.dart'; import 'package:game_tracker/data/dto/group.dart';
import 'package:game_tracker/data/dto/player.dart'; import 'package:game_tracker/data/dto/player.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
@@ -7,45 +8,49 @@ class Match {
final String id; final String id;
final DateTime createdAt; final DateTime createdAt;
final String name; final String name;
final List<Player>? players; final Game? game;
final Group? group; final Group? group;
Player? winner; final List<Player>? players;
final String? notes;
Match({ Match({
String? id, String? id,
DateTime? createdAt, DateTime? createdAt,
required this.name, required this.name,
this.players, this.game,
this.group, this.group,
this.winner, this.players,
this.notes,
}) : id = id ?? const Uuid().v4(), }) : id = id ?? const Uuid().v4(),
createdAt = createdAt ?? clock.now(); createdAt = createdAt ?? clock.now();
@override @override
String toString() { String toString() {
return 'Match{\n\tid: $id,\n\tname: $name,\n\tplayers: $players,\n\tgroup: $group,\n\twinner: $winner\n}'; return 'Match{id: $id, name: $name, game: $game, group: $group, players: $players, notes: $notes}';
} }
/// Creates a Match instance from a JSON object. /// Creates a Match instance from a JSON object.
Match.fromJson(Map<String, dynamic> json) Match.fromJson(Map<String, dynamic> json)
: id = json['id'], : id = json['id'],
name = json['name'],
createdAt = DateTime.parse(json['createdAt']), createdAt = DateTime.parse(json['createdAt']),
name = json['name'],
game = json['game'] != null ? Game.fromJson(json['game']) : null,
group = json['group'] != null ? Group.fromJson(json['group']) : null,
players = json['players'] != null players = json['players'] != null
? (json['players'] as List) ? (json['players'] as List)
.map((playerJson) => Player.fromJson(playerJson)) .map((playerJson) => Player.fromJson(playerJson))
.toList() .toList()
: null, : null,
group = json['group'] != null ? Group.fromJson(json['group']) : null, notes = json['notes'];
winner = json['winner'] != null ? Player.fromJson(json['winner']) : null;
/// Converts the Match instance to a JSON object. /// Converts the Match instance to a JSON object.
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
'id': id, 'id': id,
'createdAt': createdAt.toIso8601String(), 'createdAt': createdAt.toIso8601String(),
'name': name, 'name': name,
'players': players?.map((player) => player.toJson()).toList(), 'game': game?.toJson(),
'group': group?.toJson(), 'group': group?.toJson(),
'winner': winner?.toJson(), 'players': players?.map((player) => player.toJson()).toList(),
'notes': notes,
}; };
} }

16
lib/data/dto/pair.dart Normal file
View File

@@ -0,0 +1,16 @@
import 'package:game_tracker/data/dto/team.dart';
class Pair extends Team {
Pair({
super.id,
super.createdAt,
required super.members,
});
@override
String toString() {
return 'Pair{id: $id, members: $members}';
}
}

View File

@@ -5,26 +5,33 @@ class Player {
final String id; final String id;
final DateTime createdAt; final DateTime createdAt;
final String name; final String name;
final String? description;
Player({String? id, DateTime? createdAt, required this.name}) Player({
: id = id ?? const Uuid().v4(), String? id,
DateTime? createdAt,
required this.name,
this.description,
}) : id = id ?? const Uuid().v4(),
createdAt = createdAt ?? clock.now(); createdAt = createdAt ?? clock.now();
@override @override
String toString() { String toString() {
return 'Player{id: $id,name: $name}'; return 'Player{id: $id, name: $name, description: $description}';
} }
/// Creates a Player instance from a JSON object. /// Creates a Player instance from a JSON object.
Player.fromJson(Map<String, dynamic> json) Player.fromJson(Map<String, dynamic> json)
: id = json['id'], : id = json['id'],
createdAt = DateTime.parse(json['createdAt']), createdAt = DateTime.parse(json['createdAt']),
name = json['name']; name = json['name'],
description = json['description'];
/// Converts the Player instance to a JSON object. /// Converts the Player instance to a JSON object.
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
'id': id, 'id': id,
'createdAt': createdAt.toIso8601String(), 'createdAt': createdAt.toIso8601String(),
'name': name, 'name': name,
'description': description,
}; };
} }

37
lib/data/dto/team.dart Normal file
View File

@@ -0,0 +1,37 @@
import 'package:clock/clock.dart';
import 'package:game_tracker/data/dto/player.dart';
import 'package:uuid/uuid.dart';
class Team {
final String id;
final DateTime createdAt;
final List<Player> members;
Team({
String? id,
DateTime? createdAt,
required this.members,
}) : id = id ?? const Uuid().v4(),
createdAt = createdAt ?? clock.now();
@override
String toString() {
return 'Team{id: $id, members: $members}';
}
/// Creates a Team instance from a JSON object.
Team.fromJson(Map<String, dynamic> json)
: id = json['id'],
createdAt = DateTime.parse(json['createdAt']),
members = (json['members'] as List)
.map((memberJson) => Player.fromJson(memberJson))
.toList();
/// Converts the Team instance to a JSON object.
Map<String, dynamic> toJson() => {
'id': id,
'createdAt': createdAt.toIso8601String(),
'members': members.map((member) => member.toJson()).toList(),
};
}