diff --git a/Sources/bowlin_project/lib/database/fields/GameDetailFields.dart b/Sources/bowlin_project/lib/database/fields/GameDetailFields.dart new file mode 100644 index 0000000..8d30c01 --- /dev/null +++ b/Sources/bowlin_project/lib/database/fields/GameDetailFields.dart @@ -0,0 +1,10 @@ +class GameDetailFields { + static final List values = [ + id, date, nameWinner, host + ]; + + static final String id = '_id'; + static final String date = '_date'; + static final String nameWinner = '_winner_id'; + static final String host = '_host'; +} \ No newline at end of file diff --git a/Sources/bowlin_project/lib/database/mappers/GameDetailMapper.dart b/Sources/bowlin_project/lib/database/mappers/GameDetailMapper.dart new file mode 100644 index 0000000..a185d20 --- /dev/null +++ b/Sources/bowlin_project/lib/database/mappers/GameDetailMapper.dart @@ -0,0 +1,25 @@ +import 'package:bowl_in/model/GameDetail.dart'; + +import '../../model/User.dart'; +import '../fields/GameDetailFields.dart'; + +class GameDetailMapper { + static Map toJson(GameDetail gameDetail) { + return { + GameDetailFields.id: gameDetail.id, + GameDetailFields.date: gameDetail.time.toIso8601String(), + GameDetailFields.nameWinner: gameDetail.winner?.name, + GameDetailFields.host: gameDetail.host + }; + } + + static GameDetail toModel(Map json, User winner) { + return GameDetail( + json[GameDetailFields.id], + json[GameDetailFields.date], + json[winner], + json[GameDetailFields.host], + [], + ); + } +} diff --git a/Sources/bowlin_project/lib/database/mappers/GameMapper.dart b/Sources/bowlin_project/lib/database/mappers/GameMapper.dart index 0367e64..44aef95 100644 --- a/Sources/bowlin_project/lib/database/mappers/GameMapper.dart +++ b/Sources/bowlin_project/lib/database/mappers/GameMapper.dart @@ -1,4 +1,3 @@ -import 'package:bowl_in/database/mappers/UserMapper.dart'; import 'package:bowl_in/model/Game.dart'; import '../../model/User.dart'; import '../fields/GameFields.dart'; diff --git a/Sources/bowlin_project/lib/database/sqlflite/UserDataBase.dart b/Sources/bowlin_project/lib/database/sqlflite/UserDataBase.dart index 12cdd5b..5104443 100644 --- a/Sources/bowlin_project/lib/database/sqlflite/UserDataBase.dart +++ b/Sources/bowlin_project/lib/database/sqlflite/UserDataBase.dart @@ -3,21 +3,23 @@ import 'package:bowl_in/model/User.dart'; import 'package:path/path.dart'; import 'package:sqflite/sqflite.dart'; +import '../fields/GameDetailFields.dart'; import '../fields/GameFields.dart'; import '../fields/UserFields.dart'; import '../mappers/UserMapper.dart'; -class UserDatabase { - UserDatabase(); +class BowlInDatabase { + BowlInDatabase(); - static final UserDatabase instance = UserDatabase._init(); + static final BowlInDatabase instance = BowlInDatabase._init(); static Database? _database; - UserDatabase._init(); + BowlInDatabase._init(); static const String tableUser = 'users'; static const String tableGame = 'games'; + static const String tableGameDetail = 'gameDetails'; Future get database async { if (_database != null) return _database!; @@ -56,6 +58,15 @@ CREATE TABLE $tableGame ( ${GameFields.userId} $integerType, FOREIGN KEY(${GameFields.userId}) REFERENCES $tableUser(${UserFields.id}) ) +'''); + + await db.execute(''' +CREATE TABLE $tableGameDetail ( + ${GameDetailFields.id} $idType, + ${GameDetailFields.date} $textType, + ${GameDetailFields.nameWinner} $textType, + ${GameDetailFields.host} $textType, +) '''); } @@ -63,6 +74,7 @@ CREATE TABLE $tableGame ( if (oldVersion < 4) { await db.execute('DROP TABLE IF EXISTS $tableUser'); await db.execute('DROP TABLE IF EXISTS $tableGame'); + await db.execute('DROP TABLE IF EXISTS $tableGameDetail'); await _createDB(db, newVersion); } } diff --git a/Sources/bowlin_project/lib/main.dart b/Sources/bowlin_project/lib/main.dart index d6faae1..56cd39a 100644 --- a/Sources/bowlin_project/lib/main.dart +++ b/Sources/bowlin_project/lib/main.dart @@ -1,4 +1,5 @@ import 'package:bowl_in/model/LocalManager/LocalData.dart'; +import 'package:bowl_in/model/StubManager/StubData.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:bowl_in/config/app_router.dart'; @@ -10,7 +11,7 @@ void main() { } class MyApp extends StatelessWidget { - static IManager controller = LocalData(); + static IManager controller = StubData(); const MyApp({super.key}); diff --git a/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart b/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart index a10fc94..eb840b5 100644 --- a/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart +++ b/Sources/bowlin_project/lib/model/LocalManager/LocalData.dart @@ -1,10 +1,10 @@ +import 'package:bowl_in/database/sqlflite/UserDataBase.dart'; import 'package:bowl_in/model/IManager.dart'; -import '../../database/sqlflite/UserDataBase.dart'; import 'GameManager.dart'; import 'UserManager.dart'; class LocalData extends IManager { - final UserDatabase userDatabase = UserDatabase(); + final BowlInDatabase userDatabase = BowlInDatabase(); LocalData() { userMgr = UserManager(this);