Neue Datenbank Struktur #156

Open
gelbeinhalb wants to merge 88 commits from feature/88-neue-datenbank-struktur into development
Owner

Zugehörige Issue(s)

Closes #88

Beschreibung

Änderungen

Zusätzliche Anmerkungen

### Zugehörige Issue(s) Closes #88 ### Beschreibung ### Änderungen ### Zusätzliche Anmerkungen
gelbeinhalb added this to the Alpha milestone 2026-01-12 10:09:18 +00:00
gelbeinhalb added the
Workflow
In Progress
3
label 2026-01-12 10:09:18 +00:00
gelbeinhalb self-assigned this 2026-01-12 10:09:18 +00:00
gelbeinhalb added 3 commits 2026-01-12 10:21:31 +00:00
add team id and score
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m0s
Pull Request Pipeline / lint (pull_request) Successful in 2m8s
3344575132
gelbeinhalb added 4 commits 2026-01-12 10:33:04 +00:00
add description to group_table.dart
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m29s
Pull Request Pipeline / test (pull_request) Failing after 2m54s
5dd8f31942
gelbeinhalb added 3 commits 2026-01-12 10:40:36 +00:00
add score table
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m22s
Pull Request Pipeline / test (pull_request) Failing after 2m52s
b72ab70e02
gelbeinhalb added 1 commit 2026-01-12 10:42:09 +00:00
remove group_match_dao
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m18s
Pull Request Pipeline / test (pull_request) Failing after 2m42s
e2fe0c7d4d
sneeex removed the
Workflow
In Progress
3
label 2026-01-12 11:15:48 +00:00
gelbeinhalb added 1 commit 2026-01-16 09:14:10 +00:00
add description to group
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m10s
Pull Request Pipeline / test (pull_request) Failing after 2m29s
be01b5f72a
gelbeinhalb added 1 commit 2026-01-16 09:30:18 +00:00
add game.dart
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m8s
Pull Request Pipeline / test (pull_request) Failing after 2m29s
6a9e5dc9eb
gelbeinhalb added 5 commits 2026-01-16 10:10:45 +00:00
add pair
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m11s
Pull Request Pipeline / test (pull_request) Failing after 2m30s
b9b72cdd50
gelbeinhalb added 4 commits 2026-01-16 11:00:13 +00:00
update match_dao.dart
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m8s
Pull Request Pipeline / test (pull_request) Failing after 2m27s
867d0c55da
gelbeinhalb added 7 commits 2026-01-16 11:38:31 +00:00
update g files
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m5s
Pull Request Pipeline / lint (pull_request) Failing after 2m9s
b9b6ff85ea
gelbeinhalb added 2 commits 2026-01-16 12:44:11 +00:00
add TEMPORARY winner getter and setter methods to match_dao.dart
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 1m57s
Pull Request Pipeline / lint (pull_request) Failing after 3m32s
49e990dfea
gelbeinhalb added 2 commits 2026-01-16 12:54:19 +00:00
temporarily removed group_match_test.dart
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m3s
Pull Request Pipeline / lint (pull_request) Successful in 2m5s
a68bbddc1a
gelbeinhalb requested review from flixcoo 2026-01-16 13:02:52 +00:00
gelbeinhalb added 1 commit 2026-01-16 13:03:12 +00:00
Merge remote-tracking branch 'origin/development' into feature/88-neue-datenbank-struktur
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m7s
Pull Request Pipeline / lint (pull_request) Successful in 2m9s
b6554c104a
gelbeinhalb added 1 commit 2026-01-16 13:15:59 +00:00
tests create testGame now
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m6s
Pull Request Pipeline / lint (pull_request) Successful in 2m8s
d21c37966e
gelbeinhalb requested review from sneeex 2026-01-16 13:54:31 +00:00
gelbeinhalb added 1 commit 2026-01-16 14:55:24 +00:00
remove pair
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m5s
Pull Request Pipeline / lint (pull_request) Successful in 2m11s
6a6e36ed7c
flixcoo declined to review 2026-01-17 15:03:47 +00:00
flixcoo removed review request for sneeex 2026-01-17 15:03:48 +00:00
gelbeinhalb added 4 commits 2026-01-19 13:58:40 +00:00
# Conflicts:
#	lib/presentation/views/main_menu/match_view/create_match/create_match_view.dart
add match method to change created at
Some checks failed
Pull Request Pipeline / lint (pull_request) Successful in 2m4s
Pull Request Pipeline / test (pull_request) Failing after 1m59s
c97fdc2b5f
gelbeinhalb added 1 commit 2026-01-19 14:52:31 +00:00
add name to team
Some checks failed
Pull Request Pipeline / lint (pull_request) Successful in 2m8s
Pull Request Pipeline / test (pull_request) Failing after 1m56s
8dd2f5f8b8
Author
Owner

@flixcoo @sneeex

also die main datenbank methoden sind jetzt alle ready.
Ich muss jetzt nurnoch

  • tests schreiben
  • den daten export/import anpassen

wenn euch das zu lange dauert, können das auch zwei neue issues werden.
(vorallem das mit dem daten export/import)

@flixcoo @sneeex also die main datenbank methoden sind jetzt alle ready. Ich muss jetzt nurnoch - tests schreiben - den daten export/import anpassen wenn euch das zu lange dauert, können das auch zwei neue issues werden. (vorallem das mit dem daten export/import)
Owner

@flixcoo @sneeex

also die main datenbank methoden sind jetzt alle ready.
Ich muss jetzt nurnoch

  • tests schreiben
  • den daten export/import anpassen

wenn euch das zu lange dauert, können das auch zwei neue issues werden.
(vorallem das mit dem daten export/import)

Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen

> @flixcoo @sneeex > > also die main datenbank methoden sind jetzt alle ready. > Ich muss jetzt nurnoch > - tests schreiben > - den daten export/import anpassen > > wenn euch das zu lange dauert, können das auch zwei neue issues werden. > (vorallem das mit dem daten export/import) Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen
Author
Owner

@flixcoo @sneeex

also die main datenbank methoden sind jetzt alle ready.
Ich muss jetzt nurnoch

  • tests schreiben
  • den daten export/import anpassen

wenn euch das zu lange dauert, können das auch zwei neue issues werden.
(vorallem das mit dem daten export/import)

Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen

okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig.
(Außer ihr habt noch viele Änderungen im Review)

> > @flixcoo @sneeex > > > > also die main datenbank methoden sind jetzt alle ready. > > Ich muss jetzt nurnoch > > - tests schreiben > > - den daten export/import anpassen > > > > wenn euch das zu lange dauert, können das auch zwei neue issues werden. > > (vorallem das mit dem daten export/import) > > Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig. (Außer ihr habt noch viele Änderungen im Review)
gelbeinhalb added 2 commits 2026-01-19 18:52:05 +00:00
add team_test.dart.dart
Some checks failed
Pull Request Pipeline / lint (pull_request) Successful in 2m8s
Pull Request Pipeline / test (pull_request) Failing after 1m56s
25e0c75dc6
Owner

@flixcoo @sneeex

also die main datenbank methoden sind jetzt alle ready.
Ich muss jetzt nurnoch

  • tests schreiben
  • den daten export/import anpassen

wenn euch das zu lange dauert, können das auch zwei neue issues werden.
(vorallem das mit dem daten export/import)

Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen

okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig.
(Außer ihr habt noch viele Änderungen im Review)

bzgl review: wir werden deine code zerbersten

> > > @flixcoo @sneeex > > > > > > also die main datenbank methoden sind jetzt alle ready. > > > Ich muss jetzt nurnoch > > > - tests schreiben > > > - den daten export/import anpassen > > > > > > wenn euch das zu lange dauert, können das auch zwei neue issues werden. > > > (vorallem das mit dem daten export/import) > > > > Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen > > okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig. > (Außer ihr habt noch viele Änderungen im Review) bzgl review: wir werden deine code zerbersten
Author
Owner

@flixcoo @sneeex

also die main datenbank methoden sind jetzt alle ready.
Ich muss jetzt nurnoch

  • tests schreiben
  • den daten export/import anpassen

wenn euch das zu lange dauert, können das auch zwei neue issues werden.
(vorallem das mit dem daten export/import)

Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen

okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig.
(Außer ihr habt noch viele Änderungen im Review)

bzgl review: wir werden deine code zerbersten

Ja macht das :)
das ist ja der leichte teil das dann zu fixen

> > > > @flixcoo @sneeex > > > > > > > > also die main datenbank methoden sind jetzt alle ready. > > > > Ich muss jetzt nurnoch > > > > - tests schreiben > > > > - den daten export/import anpassen > > > > > > > > wenn euch das zu lange dauert, können das auch zwei neue issues werden. > > > > (vorallem das mit dem daten export/import) > > > > > > Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen > > > > okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig. > > (Außer ihr habt noch viele Änderungen im Review) > > bzgl review: wir werden deine code zerbersten Ja macht das :) das ist ja der leichte teil das dann zu fixen
Owner

@flixcoo @sneeex

also die main datenbank methoden sind jetzt alle ready.
Ich muss jetzt nurnoch

  • tests schreiben
  • den daten export/import anpassen

wenn euch das zu lange dauert, können das auch zwei neue issues werden.
(vorallem das mit dem daten export/import)

Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen

okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig.
(Außer ihr habt noch viele Änderungen im Review)

bzgl review: wir werden deine code zerbersten

Ja macht das :)
das ist ja der leichte teil das dann zu fixen

Du darfst nicht so nett sein

> > > > > @flixcoo @sneeex > > > > > > > > > > also die main datenbank methoden sind jetzt alle ready. > > > > > Ich muss jetzt nurnoch > > > > > - tests schreiben > > > > > - den daten export/import anpassen > > > > > > > > > > wenn euch das zu lange dauert, können das auch zwei neue issues werden. > > > > > (vorallem das mit dem daten export/import) > > > > > > > > Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen > > > > > > okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig. > > > (Außer ihr habt noch viele Änderungen im Review) > > > > bzgl review: wir werden deine code zerbersten > > Ja macht das :) > das ist ja der leichte teil das dann zu fixen > Du darfst nicht so nett sein
Author
Owner

@flixcoo @sneeex

also die main datenbank methoden sind jetzt alle ready.
Ich muss jetzt nurnoch

  • tests schreiben
  • den daten export/import anpassen

wenn euch das zu lange dauert, können das auch zwei neue issues werden.
(vorallem das mit dem daten export/import)

Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen

okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig.
(Außer ihr habt noch viele Änderungen im Review)

bzgl review: wir werden deine code zerbersten

Ja macht das :)
das ist ja der leichte teil das dann zu fixen

Du darfst nicht so nett sein

Okay, dann bin ich jetzt nicht mehr nett.
Du Fettsack

:(

> > > > > > @flixcoo @sneeex > > > > > > > > > > > > also die main datenbank methoden sind jetzt alle ready. > > > > > > Ich muss jetzt nurnoch > > > > > > - tests schreiben > > > > > > - den daten export/import anpassen > > > > > > > > > > > > wenn euch das zu lange dauert, können das auch zwei neue issues werden. > > > > > > (vorallem das mit dem daten export/import) > > > > > > > > > > Ich würd das beides lieber noch hier drin machen, weil vor allem der import halt essentiell ist um mit reelen daten zu testen und nicht tausend matches, groups und player zu erstellen > > > > > > > > okay top. Dann werde ich aber entweder heute oder morgen Abend mit dem ganzen fertig. > > > > (Außer ihr habt noch viele Änderungen im Review) > > > > > > bzgl review: wir werden deine code zerbersten > > > > Ja macht das :) > > das ist ja der leichte teil das dann zu fixen > > > > Du darfst nicht so nett sein Okay, dann bin ich jetzt nicht mehr nett. Du Fettsack :(
gelbeinhalb added 4 commits 2026-01-20 14:58:22 +00:00
add comments to all tests
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m2s
Pull Request Pipeline / lint (pull_request) Successful in 2m9s
e09ccf9356
gelbeinhalb added 1 commit 2026-01-20 15:03:42 +00:00
remove winner tests
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m2s
Pull Request Pipeline / lint (pull_request) Successful in 2m15s
b108375ad5
gelbeinhalb added 2 commits 2026-01-20 15:31:55 +00:00
remove winner check
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m2s
Pull Request Pipeline / lint (pull_request) Successful in 2m9s
6c39e1e574
gelbeinhalb added 3 commits 2026-01-20 15:34:48 +00:00
Merge branch 'feature/88-neue-datenbank-struktur' of git.yannick-weigert.de:liquid-development/game-tracker into feature/88-neue-datenbank-struktur
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m6s
Pull Request Pipeline / lint (pull_request) Successful in 2m16s
068ca95afc
gelbeinhalb added 6 commits 2026-01-21 10:36:28 +00:00
add new team tests
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 2m4s
Pull Request Pipeline / lint (pull_request) Successful in 2m9s
0b778210ef
gelbeinhalb added 2 commits 2026-01-21 10:55:20 +00:00
fix getting non-existent team throws exception test
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m4s
Pull Request Pipeline / lint (pull_request) Successful in 2m19s
b2a3a0cf75
gelbeinhalb added 2 commits 2026-01-21 11:04:19 +00:00
remove skip from test
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m0s
Pull Request Pipeline / lint (pull_request) Successful in 2m8s
12b713bb70
gelbeinhalb added 2 commits 2026-01-21 14:53:52 +00:00
fix data import and export
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m8s
Pull Request Pipeline / lint (pull_request) Failing after 2m18s
7339194ba0
Author
Owner

Freunde...
Ich glaube das ist es erstmal 😅

Ich freu mich auf 100000 Anmerkungen die ich fixen muss :D
Aber der wichtige Part ist fertig.

Freunde... Ich glaube das ist es erstmal 😅 Ich freu mich auf 100000 Anmerkungen die ich fixen muss :D Aber der wichtige Part ist fertig.
gelbeinhalb requested review from flixcoo 2026-01-21 14:56:19 +00:00
gelbeinhalb requested review from sneeex 2026-01-21 14:56:19 +00:00
gelbeinhalb added the
PR
Ready for Review
2
label 2026-01-21 14:56:25 +00:00
gelbeinhalb added 1 commit 2026-01-21 15:10:26 +00:00
remove unused variable
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m4s
Pull Request Pipeline / lint (pull_request) Successful in 2m11s
0ddb4edbc9
gelbeinhalb added 1 commit 2026-01-21 15:10:55 +00:00
Merge remote-tracking branch 'origin/development' into feature/88-neue-datenbank-struktur
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 1m58s
Pull Request Pipeline / lint (pull_request) Successful in 2m17s
6006c6d3f7
flixcoo changed title from WIP: Neue Datenbank Struktur to Neue Datenbank Struktur 2026-01-21 15:15:45 +00:00
flixcoo requested changes 2026-01-21 17:08:49 +00:00
Dismissed
flixcoo left a comment
Owner

Review

  • Bitte pack in den Testfiles die Tests in Gruppen, damit man die besser zuordnen kann. Aktuell ist das sehr unübersichtlich.
  • An diversen Stellen gibt es m.M.n. unnötige nullable Parameter, bin da aber auch offen für Diskussion
  • Ich würde Parameter mit begrenzt vielen Auswahlmgölichkeiten (Icon, Farbe, Ruleset) gerne als enum in den DTOs speichern und in der Datenbank dann glaub ich lieber als int oder als String enum (kommt dann wahrscheinlich sowas raus wie Colors.blue.
## Review - Bitte pack in den Testfiles die Tests in Gruppen, damit man die besser zuordnen kann. Aktuell ist das sehr unübersichtlich. - An diversen Stellen gibt es m.M.n. unnötige nullable Parameter, bin da aber auch offen für Diskussion - Ich würde Parameter mit begrenzt vielen Auswahlmgölichkeiten (Icon, Farbe, Ruleset) gerne als `enum` in den DTOs speichern und in der Datenbank dann glaub ich lieber als int oder als String enum (kommt dann wahrscheinlich sowas raus wie `Colors.blue`.
@@ -17,1 +17,4 @@
"type": "string"
},
"description": {
"type": ["string", "null"]
Owner

Ich glaube es würde mehr Sinn machen, die description nicht nullable zu machen, sondern einfach durch leeren String zu ersetzen, weil wir uns dann viel null checken sparen

Ich glaube es würde mehr Sinn machen, die `description` nicht nullable zu machen, sondern einfach durch leeren String zu ersetzen, weil wir uns dann viel null checken sparen
gelbeinhalb marked this conversation as resolved
@@ -18,0 +23,4 @@
"required": [
"id",
"createdAt",
"name"
Owner

Bei required dann description hinzufügen

Bei `required` dann `description` hinzufügen
gelbeinhalb marked this conversation as resolved
@@ -18,0 +42,4 @@
"type": "string"
},
"ruleset": {
"type": ["string", "null"]
Owner

Ruleset hier auch nicht null, da Game immer ein Ruleset brauch.

Ruleset hier auch nicht null, da Game immer ein Ruleset brauch.
gelbeinhalb marked this conversation as resolved
@@ -18,0 +45,4 @@
"type": ["string", "null"]
},
"description": {
"type": ["string", "null"]
Owner

Hier auch wieder description nicht null sondern empty

Hier auch wieder description nicht `null` sondern `empty`
gelbeinhalb marked this conversation as resolved
@@ -18,0 +48,4 @@
"type": ["string", "null"]
},
"color": {
"type": ["integer", "null"]
Owner

Warum machst du die color als integer aber die rulesets als string? Ich würde entweder beides als String oder beiden als int (bevorzugt), und beim retrieven dann als enum in den jeweiligen Klassen speichern.

Warum machst du die color als integer aber die rulesets als string? Ich würde entweder beides als `String` oder beiden als `int` (bevorzugt), und beim retrieven dann als `enum` in den jeweiligen Klassen speichern.
Author
Owner

war ausversehen 😅😅

war ausversehen 😅😅
gelbeinhalb marked this conversation as resolved
@@ -18,0 +51,4 @@
"type": ["integer", "null"]
},
"icon": {
"type": ["string", "null"]
Owner

Ich find Icons prinzipell keine schlechte Idee, aber finde sie dann eher bei z.B. Gruppen sinnvoller, weil was für Icons will man bei Games machen? Also bei Gruppen könnte man halt je nach sozialen Aspekten n icon setzen, bei Games fällt mir dazu nicht viel ein

Ich find Icons prinzipell keine schlechte Idee, aber finde sie dann eher bei z.B. Gruppen sinnvoller, weil was für Icons will man bei Games machen? Also bei Gruppen könnte man halt je nach sozialen Aspekten n icon setzen, bei Games fällt mir dazu nicht viel ein
Author
Owner

hätte sowas gedacht wie poker karten oder andere icons für die games.
Gruppen icons würde ich auch adden

hätte sowas gedacht wie poker karten oder andere icons für die games. Gruppen icons würde ich auch adden
Owner

Das Problem ist, wenn du sagst Pokerkarten als Icon, musst du ja total viele Icons irgendwo her bekommen, die sehr speziell sind (Spielkarten, Brettspiel, etc ..), da würde ich dann vllt eher auf sowas wie emojis setzen und da ist die auswahl die thematisch dazu passt ja begrenzt. Aber sonst kann @sneeex nochmal sagen was er dazu denkt

Das Problem ist, wenn du sagst Pokerkarten als Icon, musst du ja total viele Icons irgendwo her bekommen, die sehr speziell sind (Spielkarten, Brettspiel, etc ..), da würde ich dann vllt eher auf sowas wie emojis setzen und da ist die auswahl die thematisch dazu passt ja begrenzt. Aber sonst kann @sneeex nochmal sagen was er dazu denkt
Owner

weiß nicht ob ich emojis geil finde, sehe aber das problem mit den icons

weiß nicht ob ich emojis geil finde, sehe aber das problem mit den icons
Author
Owner

lass das sonst demnächst mal besprechen, was man für icons bräuchte

lass das sonst demnächst mal besprechen, was man für icons bräuchte
gelbeinhalb marked this conversation as resolved
@@ -67,6 +136,12 @@
"createdAt": {
"type": "string"
},
"gameId": {
Owner

Meinst du hier matchId?

Meinst du hier `matchId`?
Author
Owner

bin gerade am handy, gucke später

bin gerade am handy, gucke später
Author
Owner

ja meinte ich. Ist aber jetzt komplett aus dem Team array entfernt

ja meinte ich. Ist aber jetzt komplett aus dem Team array entfernt
gelbeinhalb marked this conversation as resolved
@@ -68,2 +137,4 @@
"type": "string"
},
"gameId": {
"anyOf": [
Owner

Warum hier nicht

"type": ["string", "null"]

Würde das konsequent machen, eins von beiden und dann das gesamte Schema durch.

Warum hier nicht ```json "type": ["string", "null"] ``` Würde das konsequent machen, eins von beiden und dann das gesamte Schema durch.
gelbeinhalb marked this conversation as resolved
@@ -70,0 +139,4 @@
"gameId": {
"anyOf": [
{"type": "string"},
{"type": "null"}
Owner

Wenn es hier um ein Match und nicht um ein Game geht, darf Match(Game) nicht null sein, weil ein Spiel immer eine Spielvorlage haben muss

Wenn es hier um ein `Match` und nicht um ein `Game` geht, darf `Match`(`Game`) nicht `null` sein, weil ein Spiel immer eine Spielvorlage haben muss
gelbeinhalb marked this conversation as resolved
@@ -326,0 +378,4 @@
required String matchId,
required String winnerId,
}) async {
// TODO: Implement winner persistence
Owner

Implementierung vergessen

Implementierung vergessen
Author
Owner

Wir speichern keine winner mehr. Der code ist ein placeholder bis der aktuelle code nicht mehr auf das winner attribut referenced

Wir speichern keine winner mehr. Der code ist ein placeholder bis der aktuelle code nicht mehr auf das winner attribut referenced
Owner

Aber das funktioniert doch trotzdem. Du gibst je nach Spielmodus und Score in diesem Spielmodus ein Player Objekt zurück. Da wir aktuell sowieso nur Spiele mit winner only haben, gibst du einfach allen den Score 0 und dem winner den score 1. Und danach wird der dann retrieved bzw gesetzt

Aber das funktioniert doch trotzdem. Du gibst je nach Spielmodus und Score in diesem Spielmodus ein `Player` Objekt zurück. Da wir aktuell sowieso nur Spiele mit winner only haben, gibst du einfach allen den Score 0 und dem winner den score 1. Und danach wird der dann retrieved bzw gesetzt
Author
Owner

Ja aber dafür müsste ich doch erst komplett die rulesets implementieren

Ja aber dafür müsste ich doch erst komplett die rulesets implementieren
gelbeinhalb marked this conversation as resolved
@@ -326,0 +385,4 @@
/// TEMPORARY: Removes the winner of a match.
/// Currently does nothing - winner is not persisted.
Future<bool> removeWinner({required String matchId}) async {
// TODO: Implement winner persistence
Owner

Implementierung vergessen

Implementierung vergessen
gelbeinhalb marked this conversation as resolved
@@ -39,3 +47,3 @@
@override
int get schemaVersion => 1;
int get schemaVersion => 2;
Owner

Habe beim ersten Starten der App diese Meldung bekommen:

[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Exception: You've bumped the schema version for your drift database but didn't provide a strategy for schema updates. Please do that by adapting the migrations getter in your database class.
package:drift/src/runtime/query_builder/migration.dart 20:5                             _defaultOnUpdate
package:drift/src/runtime/api/db_base.dart 133:43                                       GeneratedDatabase.beforeOpen.<fn>
dart:async/zone.dart 1525:13                                                            _rootRun
dart:async/zone.dart 1422:19                                                            _CustomZone.run
dart:async/zone.dart 2034:6                                                             _runZoned
dart:async/zone.dart 1960:10                                                            runZoned
package:drift/src/runtime/api/connection_user.dart 639:12                               DatabaseConnectionUser._runConnectionZone<…>

Ich glaube das ist für Datenbankmigrationen gedacht, also wenn man das Schema nachträglich verändert, deswegen lass das mal auf 1.

Habe beim ersten Starten der App diese Meldung bekommen: ```bash [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: Exception: You've bumped the schema version for your drift database but didn't provide a strategy for schema updates. Please do that by adapting the migrations getter in your database class. package:drift/src/runtime/query_builder/migration.dart 20:5 _defaultOnUpdate package:drift/src/runtime/api/db_base.dart 133:43 GeneratedDatabase.beforeOpen.<fn> dart:async/zone.dart 1525:13 _rootRun dart:async/zone.dart 1422:19 _CustomZone.run dart:async/zone.dart 2034:6 _runZoned dart:async/zone.dart 1960:10 runZoned package:drift/src/runtime/api/connection_user.dart 639:12 DatabaseConnectionUser._runConnectionZone<…> ``` Ich glaube das ist für Datenbankmigrationen gedacht, also wenn man das Schema nachträglich verändert, deswegen lass das mal auf 1.
Author
Owner

ups das war claude dann 😅

ups das war claude dann 😅
gelbeinhalb marked this conversation as resolved
@@ -0,0 +3,4 @@
class GameTable extends Table {
TextColumn get id => text()();
TextColumn get name => text()();
TextColumn get ruleset => text()();
Owner

Gleiche anmerkung wie oben, würde ich über einen int lösen

Gleiche anmerkung wie oben, würde ich über einen `int` lösen
gelbeinhalb marked this conversation as resolved
@@ -0,0 +4,4 @@
TextColumn get id => text()();
TextColumn get name => text()();
TextColumn get ruleset => text()();
TextColumn get description => text().nullable()();
Owner

Gleiches wie oben, nicht nullable machen sondern einfach als Standard n leeren String

Gleiches wie oben, nicht nullable machen sondern einfach als Standard n leeren String
gelbeinhalb marked this conversation as resolved
@@ -3,6 +3,7 @@ import 'package:drift/drift.dart';
class GroupTable extends Table {
TextColumn get id => text()();
TextColumn get name => text()();
TextColumn get description => text().nullable()();
Owner

Hier auch wieder nicht nullable machen sondern als leeren String setzen

Hier auch wieder nicht nullable machen sondern als leeren String setzen
gelbeinhalb marked this conversation as resolved
@@ -7,0 +7,4 @@
TextColumn get gameId =>
text().references(GameTable, #id, onDelete: KeyAction.cascade)();
TextColumn get groupId =>
text().references(GroupTable, #id, onDelete: KeyAction.cascade).nullable()(); // Nullable if not part of a group
Owner

Kommentar drüber setzten, damit die Zeile nicht so lang ist

Kommentar drüber setzten, damit die Zeile nicht so lang ist
gelbeinhalb marked this conversation as resolved
@@ -7,0 +8,4 @@
text().references(GameTable, #id, onDelete: KeyAction.cascade)();
TextColumn get groupId =>
text().references(GroupTable, #id, onDelete: KeyAction.cascade).nullable()(); // Nullable if not part of a group
TextColumn get name => text().nullable()();
Owner

Name ist sollte nicht nullable sein, der wird im Frontend doch gesetzt wenn man keinen eigenen eingibt

Name ist sollte nicht nullable sein, der wird im Frontend doch gesetzt wenn man keinen eigenen eingibt
gelbeinhalb marked this conversation as resolved
@@ -7,0 +9,4 @@
TextColumn get groupId =>
text().references(GroupTable, #id, onDelete: KeyAction.cascade).nullable()(); // Nullable if not part of a group
TextColumn get name => text().nullable()();
TextColumn get notes => text().nullable()();
Owner

Hier auch nicht nullable, sondern empty string

Hier auch nicht nullable, sondern empty string
gelbeinhalb marked this conversation as resolved
@@ -3,6 +3,7 @@ import 'package:drift/drift.dart';
class PlayerTable extends Table {
TextColumn get id => text()();
TextColumn get name => text()();
TextColumn get description => text().nullable()();
Owner

Hier auch nicht nullable sondern empty string

Hier auch nicht nullable sondern empty string
gelbeinhalb marked this conversation as resolved
@@ -0,0 +5,4 @@
final String id;
final DateTime createdAt;
final String name;
final String? ruleset;
Owner

Ruleset sollte nicht optional, weil das immer gebraucht wird
Ruleset als enum

Ruleset sollte nicht optional, weil das immer gebraucht wird Ruleset als enum
gelbeinhalb marked this conversation as resolved
@@ -0,0 +6,4 @@
final DateTime createdAt;
final String name;
final String? ruleset;
final String? description;
Owner

Description als leeren string setzen, wenn nicht übergeben

Description als leeren string setzen, wenn nicht übergeben
Owner

warum findest du leeren string besser als nullable?

warum findest du leeren string besser als nullable?
Owner

Finde null sollte man nur dann verwenden, wenns halt nicht anders geht, wie z.B. bei objekten

Finde null sollte man nur dann verwenden, wenns halt nicht anders geht, wie z.B. bei objekten
gelbeinhalb marked this conversation as resolved
@@ -0,0 +7,4 @@
final String name;
final String? ruleset;
final String? description;
final int? color;
Owner

Hier lieber enum, gerne auch mit einem Color.none

Hier lieber enum, gerne auch mit einem `Color.none`
Owner

warum aber nicht hex codes?

warum aber nicht hex codes?
Owner

oder willst du die farben vorgeben?

oder willst du die farben vorgeben?
Owner

Ja man könnte auch hexcodes machen. Würde die Farben so oder so vorgeben unabhängig davon wie man sie speichert

Ja man könnte auch hexcodes machen. Würde die Farben so oder so vorgeben unabhängig davon wie man sie speichert
Author
Owner

würde enums maybe machen, weil man sonst im export einfach den hex code ändern könnte. Also idk ob das juckt aber 🤷‍♂️

würde enums maybe machen, weil man sonst im export einfach den hex code ändern könnte. Also idk ob das juckt aber 🤷‍♂️
gelbeinhalb marked this conversation as resolved
@@ -0,0 +8,4 @@
final String? ruleset;
final String? description;
final int? color;
final String? icon;
Owner

Hier auch mit enum arbeiten?

Hier auch mit enum arbeiten?
gelbeinhalb marked this conversation as resolved
@@ -6,3 +6,3 @@
final String id;
final DateTime createdAt;
final String name;
final String? description;
Owner

Nicht nullable sondern empty string

Nicht nullable sondern empty string
gelbeinhalb marked this conversation as resolved
@@ -8,3 +9,3 @@
final DateTime createdAt;
final String name;
final List<Player>? players;
final Game? game;
Owner

Game nicht optional sondern required

Game nicht optional sondern required
gelbeinhalb marked this conversation as resolved
@@ -10,2 +11,3 @@
final List<Player>? players;
final Game? game;
final Group? group;
final List<Player>? players;
Owner

Spielerliste auch nicht optional

Spielerliste auch nicht optional
gelbeinhalb marked this conversation as resolved
@@ -0,0 +1,16 @@
import 'package:game_tracker/data/dto/team.dart';
class Pair extends Team {
Owner

Ich weiß nicht, was wir besprochen hatten, aber macht nicht mehr sinn

class Pair extends Player 

Damit wir in normalen mathces trz eine List<Player> haben könnne

Ich weiß nicht, was wir besprochen hatten, aber macht nicht mehr sinn ```dart class Pair extends Player ``` Damit wir in normalen mathces trz eine `List<Player>` haben könnne
Author
Owner

lass da freitag nochmal drüber reden

lass da freitag nochmal drüber reden
Owner

Äh ne ich glaub das ist irrellevant, das hatte ich vor 5 Tagen schonmal kommentiert aber das review nicht abgeschickt

Äh ne ich glaub das ist irrellevant, das hatte ich vor 5 Tagen schonmal kommentiert aber das review nicht abgeschickt
Author
Owner

ah okay

ah okay
gelbeinhalb marked this conversation as resolved
@@ -5,26 +5,33 @@ class Player {
final String id;
final DateTime createdAt;
final String name;
final String? description;
Owner

Leerer String statt nullable

Leerer String statt nullable
gelbeinhalb marked this conversation as resolved
@@ -320,2 +153,2 @@
expect(newWinner.createdAt, testPlayer5.createdAt);
}
final allGames = await database.gameDao.getAllGames();
expect(allGames.length, 3);
Owner

Hier bitte ergänzen das alle Parameter (id, name, ...) auch den ursprünglichen parametern entsprechen

Hier bitte ergänzen das alle Parameter (id, name, ...) auch den ursprünglichen parametern entsprechen
gelbeinhalb marked this conversation as resolved
flixcoo added
PR
In Review
1
and removed
PR
Ready for Review
2
labels 2026-01-21 17:08:58 +00:00
Author
Owner

Review

  • Bitte pack in den Testfiles die Tests in Gruppen, damit man die besser zuordnen kann. Aktuell ist das sehr unübersichtlich.
  • An diversen Stellen gibt es m.M.n. unnötige nullable Parameter, bin da aber auch offen für Diskussion
  • Ich würde Parameter mit begrenzt vielen Auswahlmgölichkeiten (Icon, Farbe, Ruleset) gerne als enum in den DTOs speichern und in der Datenbank dann glaub ich lieber als int oder als String enum (kommt dann wahrscheinlich sowas raus wie Colors.blue.

Ja geb ich dir recht :) ich guck da morgen nochmal drüber.

> ## Review > > - Bitte pack in den Testfiles die Tests in Gruppen, damit man die besser zuordnen kann. Aktuell ist das sehr unübersichtlich. > - An diversen Stellen gibt es m.M.n. unnötige nullable Parameter, bin da aber auch offen für Diskussion > - Ich würde Parameter mit begrenzt vielen Auswahlmgölichkeiten (Icon, Farbe, Ruleset) gerne als `enum` in den DTOs speichern und in der Datenbank dann glaub ich lieber als int oder als String enum (kommt dann wahrscheinlich sowas raus wie `Colors.blue`. Ja geb ich dir recht :) ich guck da morgen nochmal drüber.
Owner

immer noch keine beschreibung?

immer noch keine beschreibung?
sneeex requested changes 2026-01-21 21:47:15 +00:00
@@ -0,0 +67,4 @@
/// Adds multiple [games] to the database in a batch operation.
/// Uses insertOrIgnore to avoid overwriting existing games.
Future<bool> addGamesAsList({required List<Game> games}) async {
Owner

(kommentar stelle ist irrelevant)
Warum gibt es die Funktion nicht zum updaten von Membern einer Gruppe? Siehe #88
Außerdem gibt es afaik auch keine Funktion zum updaten von Member eines Matches.
Also es geht nicht darum, dass man einzelne entfernen/hinzufügen kann, sondern eine Funktion die Member nimmt und dann diese Member als Member einer Group bzw. Player eines Matches setzt
(vielleicht hab ich auch übersehen?)

(kommentar stelle ist irrelevant) Warum gibt es die Funktion nicht zum updaten von Membern einer Gruppe? Siehe #88 Außerdem gibt es afaik auch keine Funktion zum updaten von Member eines Matches. Also es geht nicht darum, dass man einzelne entfernen/hinzufügen kann, sondern eine Funktion die Member nimmt und dann diese Member als Member einer Group bzw. Player eines Matches setzt (vielleicht hab ich auch übersehen?)
gelbeinhalb marked this conversation as resolved
@@ -28,3 +28,3 @@
if (!await db.playerDao.playerExists(playerId: player.id)) {
db.playerDao.addPlayer(player: player);
await db.playerDao.addPlayer(player: player);
Owner

Der Kommentar bezieht sich nur auf die files player_group_dao und group_dao: Warum gibts hier keine generierte g.dart Datei?
Das gleiche gilt auch für group_dao

Der Kommentar bezieht sich nur auf die files `player_group_dao` und `group_dao`: Warum gibts hier keine generierte g.dart Datei? Das gleiche gilt auch für group_dao
Author
Owner

gibt es doch?

gibt es doch?
Owner

wo denn?
grafik.png

wo denn? <img width="272" alt="grafik.png" src="attachments/580d1d0d-8f0f-4dce-98b9-db382c45c8b2">
102 KiB
sneeex marked this conversation as resolved
Owner

konnte sonst jetzt gerade nichts weiteres finden

konnte sonst jetzt gerade nichts weiteres finden
gelbeinhalb added 3 commits 2026-01-23 10:54:43 +00:00
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
b0cb385756
gelbeinhalb added 9 commits 2026-02-01 17:27:28 +00:00
# Conflicts:
#	lib/data/dao/group_match_dao.dart
#	lib/data/dao/match_dao.dart
#	lib/data/dao/player_match_dao.dart
#	lib/data/db/database.dart
#	lib/data/db/database.g.dart
#	lib/data/db/tables/group_match_table.dart
#	lib/data/db/tables/player_match_table.dart
#	lib/data/dto/match.dart
#	lib/presentation/views/main_menu/home_view.dart
#	lib/presentation/views/main_menu/match_view/create_match/create_match_view.dart
#	lib/presentation/views/main_menu/match_view/match_view.dart
#	lib/services/data_transfer_service.dart
#	test/db_tests/game_test.dart
#	test/db_tests/group_match_test.dart
#	test/db_tests/player_match_test.dart
players cant be null
Some checks failed
Pull Request Pipeline / test (pull_request) Failing after 40s
Pull Request Pipeline / lint (pull_request) Failing after 44s
7aba8554c0
gelbeinhalb added 6 commits 2026-02-07 16:35:59 +00:00
gelbeinhalb added 1 commit 2026-02-07 16:40:32 +00:00
fix formatting
Some checks failed
Pull Request Pipeline / lint (pull_request) Successful in 1m25s
Pull Request Pipeline / test (pull_request) Failing after 36s
278544788e
gelbeinhalb added 1 commit 2026-02-07 17:17:14 +00:00
fix expected null when empty string is correct
All checks were successful
Pull Request Pipeline / lint (pull_request) Successful in 40s
Pull Request Pipeline / test (pull_request) Successful in 35s
e881cf0555
gelbeinhalb requested review from sneeex 2026-02-07 17:19:11 +00:00
sneeex dismissed flixcoo's review 2026-02-07 19:11:52 +00:00
Reason:

Bugs

gelbeinhalb added 1 commit 2026-02-07 19:12:00 +00:00
Merge remote-tracking branch 'origin/development' into feature/88-neue-datenbank-struktur
All checks were successful
Pull Request Pipeline / lint (pull_request) Successful in 40s
Pull Request Pipeline / test (pull_request) Successful in 36s
e4ea46c6cd
flixcoo requested changes 2026-02-23 17:22:32 +00:00
flixcoo left a comment
Owner

Review

Ich hab jetzt nochmal ein paar kleine Sachen angemerkt, die mir aufgefallen sind, @sneeex soll da auf jeden Fall auch nochmal drüber gucken, weil der PR ist ja jetzt schon echt riesig.

Eine Sache, wo ich mir jetzt immer noch nicht sicher bin wie und ob wir das brauchen sind die description bzw. icons. Ich finde descriptions bei Groups und Matches in Ordnung, aber für Players sehe ich irgendwie keinen Anwendungszweck. Außerdem ist das mit den icons auch ne sache, wo ich noch nicht ganz weiß, wie das dann am ende aussieht. @gelbeinhalb falls du da n konkreten Plan auch hast, wie das UI später aussehen soll, können wir die drin lassen.

# Review Ich hab jetzt nochmal ein paar kleine Sachen angemerkt, die mir aufgefallen sind, @sneeex soll da auf jeden Fall auch nochmal drüber gucken, weil der PR ist ja jetzt schon echt riesig. Eine Sache, wo ich mir jetzt immer noch nicht sicher bin wie und ob wir das brauchen sind die description bzw. icons. Ich finde descriptions bei Groups und Matches in Ordnung, aber für Players sehe ich irgendwie keinen Anwendungszweck. Außerdem ist das mit den icons auch ne sache, wo ich noch nicht ganz weiß, wie das dann am ende aussieht. @gelbeinhalb falls du da n konkreten Plan auch hast, wie das UI später aussehen soll, können wir die drin lassen.
@@ -67,11 +142,14 @@
"createdAt": {
"type": "string"
},
"endedAt": {
Owner

Was soll endedAt für einen Sinn haben? Also wozu brauche ich den Endzeitpunkt eines Spiels? Und vor allem wie lege ich den Fest? Wenn ich denn Winner setze?

Was soll `endedAt` für einen Sinn haben? Also wozu brauche ich den Endzeitpunkt eines Spiels? Und vor allem wie lege ich den Fest? Wenn ich denn Winner setze?
Author
Owner

Ich dachte, dass man den Zeitpunkt später braucht, wenn das Winner Attribut entfernt wird. Später soll das ja nur calculated werden basierend auf den scores der Spieler und nicht extra gespeichert werden. Dann braucht man ja einen Weg zu sagen, ob das Spiel fertig ist oder nicht. Einen endedAt Timestamp fand ich besser als einen einfachen finished boolean

Ich dachte, dass man den Zeitpunkt später braucht, wenn das Winner Attribut entfernt wird. Später soll das ja nur calculated werden basierend auf den scores der Spieler und nicht extra gespeichert werden. Dann braucht man ja einen Weg zu sagen, ob das Spiel fertig ist oder nicht. Einen `endedAt` Timestamp fand ich besser als einen einfachen `finished` boolean
Owner

ah okay, ja fair

ah okay, ja fair
flixcoo marked this conversation as resolved
@@ -0,0 +36,4 @@
return Game(
id: result.id,
name: result.name,
ruleset: Ruleset.values.firstWhere((e) => e.name == result.ruleset),
Owner

Funktioniert das tatsächlich? Ist das getestet, dass dann auch ein ruleset (color) gefunden wird wenn du den enum speicherst?

Funktioniert das tatsächlich? Ist das getestet, dass dann auch ein ruleset (color) gefunden wird wenn du den enum speicherst?
Author
Owner

Ja glaube das hat funktioniert

Ja glaube das hat funktioniert
flixcoo marked this conversation as resolved
@@ -6,1 +7,3 @@
late final winnerId = text().nullable()();
TextColumn get gameId =>
text().references(GameTable, #id, onDelete: KeyAction.cascade)();
// Nullable if not part of a group
Owner

Kommentar mach keinen Sinn, sollte eher heißen Nullable if not group takes part in the match o.ä.

Kommentar mach keinen Sinn, sollte eher heißen `Nullable if not group takes part in the match` o.ä.
gelbeinhalb marked this conversation as resolved
@@ -0,0 +16,4 @@
DateTime? createdAt,
required this.name,
required this.ruleset,
required this.description,
Owner

Description sollte nicht obligatorisch sein, sondern optional. Wenn nicht gesetzt soll es ein leerer String werden.

Description sollte nicht obligatorisch sein, sondern optional. Wenn nicht gesetzt soll es ein leerer String werden.
Author
Owner

Dachte man soll den als leeren String selber setzen müssen

Dachte man soll den als leeren String selber setzen müssen
Owner

würde das lieber so machen, weil man ja sonst immer unnötig die description setzten muss

würde das lieber so machen, weil man ja sonst immer unnötig die description setzten muss
Owner

finde auch optional

finde auch optional
@@ -12,3 +13,4 @@
String? id,
DateTime? createdAt,
required this.name,
required this.description,
Owner

Auch hier Beschreibung optional

Auch hier Beschreibung optional
Author
Owner

.

.
@@ -11,1 +13,4 @@
final Game game;
final Group? group;
final List<Player> players;
final String notes;
Owner

Notes optional

Notes optional
Author
Owner

Dachte leerer String

Dachte leerer String
Owner

s.o.

s.o.
@@ -12,0 +11,4 @@
String? id,
DateTime? createdAt,
required this.name,
required this.description,
Owner

Description optional

Description optional
Author
Owner

Wieso? Ich dachte wir machen alles als leeren String?

Wieso? Ich dachte wir machen alles als leeren String?
Owner

s.o.

s.o.
Owner

Eine Sache, wo ich mir jetzt immer noch nicht sicher bin wie und ob wir das brauchen sind die description bzw. icons. Ich finde descriptions bei Groups und Matches in Ordnung, aber für Players sehe ich irgendwie keinen Anwendungszweck. Außerdem ist das mit den icons auch ne sache, wo ich noch nicht ganz weiß, wie das dann am ende aussieht. @gelbeinhalb falls du da n konkreten Plan auch hast, wie das UI später aussehen soll, können wir die drin lassen.

Nochmal kurz hierzu, habe mit mathis kurz drüber gesprochen, wir lassen das drin.

> Eine Sache, wo ich mir jetzt immer noch nicht sicher bin wie und ob wir das brauchen sind die description bzw. icons. Ich finde descriptions bei Groups und Matches in Ordnung, aber für Players sehe ich irgendwie keinen Anwendungszweck. Außerdem ist das mit den icons auch ne sache, wo ich noch nicht ganz weiß, wie das dann am ende aussieht. @gelbeinhalb falls du da n konkreten Plan auch hast, wie das UI später aussehen soll, können wir die drin lassen. Nochmal kurz hierzu, habe mit mathis kurz drüber gesprochen, wir lassen das drin.
flixcoo added a new dependency 2026-02-24 16:39:46 +00:00
All checks were successful
Pull Request Pipeline / lint (pull_request) Successful in 40s
Required
Details
Pull Request Pipeline / test (pull_request) Successful in 36s
Required
Details
This pull request doesn't have enough required approvals yet. 0 of 1 official approvals granted.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/88-neue-datenbank-struktur:feature/88-neue-datenbank-struktur
git checkout feature/88-neue-datenbank-struktur
Sign in to join this conversation.
No Reviewers
3 Participants
Notifications
Due Date
No due date set.
Blocks
#171 WIP: Bearbeiten und Löschen von Matches
liquid-development/game-tracker
Reference: liquid-development/game-tracker#156