Added Database, Tables & DAOs

This commit is contained in:
2025-06-27 21:06:43 +02:00
parent 9d67e2f755
commit 3e647d70f3
18 changed files with 3468 additions and 1 deletions

View File

@@ -0,0 +1,10 @@
import 'package:cabo_counter/data/db/database.dart';
import 'package:drift/drift.dart';
part 'game_session_dao.g.dart';
@DriftAccessor(tables: [])
class GameSessionDao extends DatabaseAccessor<AppDatabase>
with _$GameSessionDaoMixin {
GameSessionDao(super.db);
}

View File

@@ -0,0 +1,6 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'game_session_dao.dart';
// ignore_for_file: type=lint
mixin _$GameSessionDaoMixin on DatabaseAccessor<AppDatabase> {}

View File

@@ -0,0 +1,10 @@
import 'package:cabo_counter/data/db/database.dart';
import 'package:drift/drift.dart';
part 'player_scores_dao.g.dart';
@DriftAccessor(tables: [])
class PlayerScoresDao extends DatabaseAccessor<AppDatabase>
with _$PlayerScoresDaoMixin {
PlayerScoresDao(super.db);
}

View File

@@ -0,0 +1,6 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'player_scores_dao.dart';
// ignore_for_file: type=lint
mixin _$PlayerScoresDaoMixin on DatabaseAccessor<AppDatabase> {}

View File

@@ -0,0 +1,9 @@
import 'package:cabo_counter/data/db/database.dart';
import 'package:drift/drift.dart';
part 'players_dao.g.dart';
@DriftAccessor(tables: [])
class PlayersDao extends DatabaseAccessor<AppDatabase> with _$PlayersDaoMixin {
PlayersDao(super.db);
}

View File

@@ -0,0 +1,6 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'players_dao.dart';
// ignore_for_file: type=lint
mixin _$PlayersDaoMixin on DatabaseAccessor<AppDatabase> {}

View File

@@ -0,0 +1,10 @@
import 'package:cabo_counter/data/db/database.dart';
import 'package:drift/drift.dart';
part 'round_scores_dao.g.dart';
@DriftAccessor(tables: [])
class RoundScoresDao extends DatabaseAccessor<AppDatabase>
with _$RoundScoresDaoMixin {
RoundScoresDao(super.db);
}

View File

@@ -0,0 +1,6 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'round_scores_dao.dart';
// ignore_for_file: type=lint
mixin _$RoundScoresDaoMixin on DatabaseAccessor<AppDatabase> {}

View File

@@ -0,0 +1,9 @@
import 'package:cabo_counter/data/db/database.dart';
import 'package:drift/drift.dart';
part 'rounds_dao.g.dart';
@DriftAccessor(tables: [])
class RoundsDao extends DatabaseAccessor<AppDatabase> with _$RoundsDaoMixin {
RoundsDao(super.db);
}

View File

@@ -0,0 +1,6 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'rounds_dao.dart';
// ignore_for_file: type=lint
mixin _$RoundsDaoMixin on DatabaseAccessor<AppDatabase> {}

33
lib/data/db/database.dart Normal file
View File

@@ -0,0 +1,33 @@
import 'package:cabo_counter/data/db/tables/game_session_table.dart';
import 'package:cabo_counter/data/db/tables/player_scores.dart';
import 'package:cabo_counter/data/db/tables/players_table.dart';
import 'package:cabo_counter/data/db/tables/round_scores_table.dart';
import 'package:cabo_counter/data/db/tables/rounds_table.dart';
import 'package:drift/drift.dart';
import 'package:drift_flutter/drift_flutter.dart';
import 'package:path_provider/path_provider.dart';
part 'database.g.dart';
@DriftDatabase(tables: [
GameSessionTable,
PlayerScoresTable,
PlayersTable,
RoundScoresTable,
RoundsTable
])
class AppDatabase extends _$AppDatabase {
AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection());
@override
int get schemaVersion => 1;
static QueryExecutor _openConnection() {
return driftDatabase(
name: 'cabo-counter_database',
native: const DriftNativeOptions(
databaseDirectory: getApplicationSupportDirectory,
),
);
}
}

3293
lib/data/db/database.g.dart Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
import 'package:drift/drift.dart';
class GameSessionTable extends Table {
TextColumn get id => text()();
DateTimeColumn get createdAt => dateTime()();
TextColumn get gameTitle => text()();
IntColumn get pointLimit => integer()();
IntColumn get caboPenalty => integer()();
BoolColumn get isPointsLimitEnabled => boolean()();
BoolColumn get isGameFinished => boolean()();
TextColumn get winner => text().nullable()();
IntColumn get roundNumber => integer()();
@override
Set<Column<Object>> get primaryKey => {id};
}

View File

@@ -0,0 +1,13 @@
import 'package:cabo_counter/data/db/tables/game_session_table.dart';
import 'package:cabo_counter/data/db/tables/players_table.dart';
import 'package:drift/drift.dart';
class PlayerScoresTable extends Table {
TextColumn get roundId =>
text().references(GameSessionTable, #id, onDelete: KeyAction.cascade)();
TextColumn get playerName => text().references(PlayersTable, #name)();
IntColumn get totalScore => integer()();
@override
Set<Column<Object>> get primaryKey => {roundId, playerName};
}

View File

@@ -0,0 +1,8 @@
import 'package:cabo_counter/data/db/tables/game_session_table.dart';
import 'package:drift/drift.dart';
class PlayersTable extends Table {
TextColumn get id =>
text().references(GameSessionTable, #id, onDelete: KeyAction.cascade)();
TextColumn get name => text()();
}

View File

@@ -0,0 +1,13 @@
import 'package:cabo_counter/data/db/tables/rounds_table.dart';
import 'package:drift/drift.dart';
class RoundScoresTable extends Table {
TextColumn get roundId =>
text().references(RoundsTable, #id, onDelete: KeyAction.cascade)();
TextColumn get playerName => text()();
IntColumn get score => integer()();
IntColumn get scoreUpdate => integer()();
@override
Set<Column<Object>> get primaryKey => {roundId, playerName};
}

View File

@@ -0,0 +1,13 @@
import 'package:cabo_counter/data/db/tables/game_session_table.dart';
import 'package:drift/drift.dart';
class RoundsTable extends Table {
TextColumn get id => text()();
TextColumn get gameId =>
text().references(GameSessionTable, #id, onDelete: KeyAction.cascade)();
IntColumn get roundNumber => integer()();
TextColumn get kamikazePlayer => text().nullable()();
@override
Set<Column<Object>> get primaryKey => {id};
}

View File

@@ -2,7 +2,7 @@ name: cabo_counter
description: "Mobile app for the card game Cabo" description: "Mobile app for the card game Cabo"
publish_to: 'none' publish_to: 'none'
version: 0.3.2+244 version: 0.3.2+245
environment: environment:
sdk: ^3.5.4 sdk: ^3.5.4