diff --git a/lib/data/dao/group_dao.dart b/lib/data/dao/group_dao.dart new file mode 100644 index 0000000..d2f529c --- /dev/null +++ b/lib/data/dao/group_dao.dart @@ -0,0 +1,42 @@ +import 'package:drift/drift.dart'; +import 'package:game_tracker/data/db/database.dart'; +import 'package:game_tracker/data/db/tables/group_table.dart'; +import 'package:game_tracker/data/dto/group.dart'; + +part 'group_dao.g.dart'; + +@DriftAccessor(tables: [GroupTable]) +class GroupDao extends DatabaseAccessor with _$GroupDaoMixin { + GroupDao(super.db); + + Future> getAllGroups() async { + final query = select(groupTable); + final result = await query.get(); + return result + .map((row) => Group(id: row.id, name: row.name, members: [])) + .toList(); + } + + Future getGroupById(String id) async { + final query = select(groupTable)..where((g) => g.id.equals(id)); + final result = await query.getSingle(); + + // todo: Get group members + + return Group(id: result.id, name: result.name, members: []); + } + + Future addGroup(String id, String name) async { + await into(group).insert(GroupCompanion.insert(id: id, name: name)); + } + + Future deleteGroup(String id) async { + await (delete(group)..where((g) => g.id.equals(id))).go(); + } + + Future updateGroupname(String id, String newName) async { + await (update(group)..where((g) => g.id.equals(id))).write( + GroupCompanion(name: Value(newName)), + ); + } +} diff --git a/lib/data/dao/group_dao.g.dart b/lib/data/dao/group_dao.g.dart new file mode 100644 index 0000000..4a09208 --- /dev/null +++ b/lib/data/dao/group_dao.g.dart @@ -0,0 +1,8 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'group_dao.dart'; + +// ignore_for_file: type=lint +mixin _$GroupDaoMixin on DatabaseAccessor { + $GroupTableTable get groupTable => attachedDatabase.groupTable; +} diff --git a/lib/data/methods/user.dart b/lib/data/dao/player_dao.dart similarity index 51% rename from lib/data/methods/user.dart rename to lib/data/dao/player_dao.dart index 6f4c508..d7a7596 100644 --- a/lib/data/methods/user.dart +++ b/lib/data/dao/player_dao.dart @@ -1,9 +1,16 @@ -import 'package:game_tracker/data/database.dart'; import 'package:drift/drift.dart'; +import 'package:game_tracker/data/db/database.dart'; +import 'package:game_tracker/data/db/tables/player_table.dart'; +import 'package:game_tracker/data/dto/player.dart'; -extension UserMethods on AppDatabase { - Future> getAllUsers() async { - return await select(user).get(); +part 'player_dao.g.dart'; + +@DriftAccessor(tables: [PlayerTable]) +class PlayerDao extends DatabaseAccessor with _$PlayerDaoMixin { + PlayerDao(super.db); + + Future> getAllUsers() async { + return await select(UserTable).get(); } Future getUserById(String id) async { @@ -11,9 +18,7 @@ extension UserMethods on AppDatabase { } Future addUser(String id, String name) async { - await into(user).insert( - UserCompanion.insert(id: id, name: name), - ); + await into(user).insert(UserCompanion.insert(id: id, name: name)); } Future deleteUser(String id) async { @@ -25,4 +30,4 @@ extension UserMethods on AppDatabase { UserCompanion(name: Value(newName)), ); } -} \ No newline at end of file +} diff --git a/lib/data/dao/player_dao.g.dart b/lib/data/dao/player_dao.g.dart new file mode 100644 index 0000000..c517581 --- /dev/null +++ b/lib/data/dao/player_dao.g.dart @@ -0,0 +1,8 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'player_dao.dart'; + +// ignore_for_file: type=lint +mixin _$PlayerDaoMixin on DatabaseAccessor { + $PlayerTableTable get playerTable => attachedDatabase.playerTable; +} diff --git a/lib/data/dao/player_group_dao.dart b/lib/data/dao/player_group_dao.dart new file mode 100644 index 0000000..c4daf21 --- /dev/null +++ b/lib/data/dao/player_group_dao.dart @@ -0,0 +1,40 @@ +import 'package:drift/drift.dart'; +import 'package:game_tracker/data/db/database.dart'; +import 'package:game_tracker/data/db/tables/player_group_table.dart'; + +part 'player_group_dao.g.dart'; + +@DriftAccessor(tables: [PlayerGroupTable]) +class PlayerGroupDao extends DatabaseAccessor + with _$PlayerGroupDaoMixin { + PlayerGroupDao(super.db); + + Future> getAllUsersAndGroups() async { + return await select(userGroup).get(); + } + + Future> getUsersGroups(String userId) async { + return await (select( + userGroup, + )..where((uG) => uG.userId.equals(userId))).get(); + } + + Future> getGroupsUsers(String groupId) async { + return await (select( + userGroup, + )..where((uG) => uG.groupId.equals(groupId))).get(); + } + + Future addUserToGroup(String userId, String groupId) async { + await into( + userGroup, + ).insert(UserGroupCompanion.insert(userId: userId, groupId: groupId)); + } + + Future removeUserFromGroup(String userId, String groupId) async { + await (delete( + userGroup, + )..where((uG) => uG.userId.equals(userId) & uG.groupId.equals(groupId))) + .go(); + } +} diff --git a/lib/data/dao/player_group_dao.g.dart b/lib/data/dao/player_group_dao.g.dart new file mode 100644 index 0000000..d512bb4 --- /dev/null +++ b/lib/data/dao/player_group_dao.g.dart @@ -0,0 +1,9 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'player_group_dao.dart'; + +// ignore_for_file: type=lint +mixin _$PlayerGroupDaoMixin on DatabaseAccessor { + $PlayerGroupTableTable get playerGroupTable => + attachedDatabase.playerGroupTable; +} diff --git a/lib/data/database.dart b/lib/data/database.dart deleted file mode 100644 index 2c04942..0000000 --- a/lib/data/database.dart +++ /dev/null @@ -1,46 +0,0 @@ -import 'package:drift/drift.dart'; -import 'package:drift_flutter/drift_flutter.dart'; -import 'package:path_provider/path_provider.dart'; - -part 'database.g.dart'; - -class User extends Table { - TextColumn get id => text()(); - TextColumn get name => text()(); - - @override - Set> get primaryKey => {id}; -} - -class Group extends Table { - TextColumn get id => text()(); - TextColumn get name => text()(); - - @override - Set> get primaryKey => {id}; -} - -class UserGroup extends Table { - TextColumn get userId => text().references(User, #id)(); - TextColumn get groupId => text().references(Group, #id)(); - - @override - Set> get primaryKey => {userId, groupId}; -} - -@DriftDatabase(tables: [User, Group, UserGroup]) -class AppDatabase extends _$AppDatabase { - AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection()); - - @override - int get schemaVersion => 1; - - static QueryExecutor _openConnection() { - return driftDatabase( - name: 'gametracker_db', - native: const DriftNativeOptions( - databaseDirectory: getApplicationSupportDirectory, - ), - ); - } -} \ No newline at end of file diff --git a/lib/data/database.g.dart b/lib/data/database.g.dart deleted file mode 100644 index 795f850..0000000 --- a/lib/data/database.g.dart +++ /dev/null @@ -1,1455 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'database.dart'; - -// ignore_for_file: type=lint -class $UserTable extends User with TableInfo<$UserTable, UserData> { - @override - final GeneratedDatabase attachedDatabase; - final String? _alias; - $UserTable(this.attachedDatabase, [this._alias]); - static const VerificationMeta _idMeta = const VerificationMeta('id'); - @override - late final GeneratedColumn id = GeneratedColumn( - 'id', - aliasedName, - false, - type: DriftSqlType.string, - requiredDuringInsert: true, - ); - static const VerificationMeta _nameMeta = const VerificationMeta('name'); - @override - late final GeneratedColumn name = GeneratedColumn( - 'name', - aliasedName, - false, - type: DriftSqlType.string, - requiredDuringInsert: true, - ); - @override - List get $columns => [id, name]; - @override - String get aliasedName => _alias ?? actualTableName; - @override - String get actualTableName => $name; - static const String $name = 'user'; - @override - VerificationContext validateIntegrity( - Insertable instance, { - bool isInserting = false, - }) { - final context = VerificationContext(); - final data = instance.toColumns(true); - if (data.containsKey('id')) { - context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); - } else if (isInserting) { - context.missing(_idMeta); - } - if (data.containsKey('name')) { - context.handle( - _nameMeta, - name.isAcceptableOrUnknown(data['name']!, _nameMeta), - ); - } else if (isInserting) { - context.missing(_nameMeta); - } - return context; - } - - @override - Set get $primaryKey => {id}; - @override - UserData map(Map data, {String? tablePrefix}) { - final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; - return UserData( - id: attachedDatabase.typeMapping.read( - DriftSqlType.string, - data['${effectivePrefix}id'], - )!, - name: attachedDatabase.typeMapping.read( - DriftSqlType.string, - data['${effectivePrefix}name'], - )!, - ); - } - - @override - $UserTable createAlias(String alias) { - return $UserTable(attachedDatabase, alias); - } -} - -class UserData extends DataClass implements Insertable { - final String id; - final String name; - const UserData({required this.id, required this.name}); - @override - Map toColumns(bool nullToAbsent) { - final map = {}; - map['id'] = Variable(id); - map['name'] = Variable(name); - return map; - } - - UserCompanion toCompanion(bool nullToAbsent) { - return UserCompanion(id: Value(id), name: Value(name)); - } - - factory UserData.fromJson( - Map json, { - ValueSerializer? serializer, - }) { - serializer ??= driftRuntimeOptions.defaultSerializer; - return UserData( - id: serializer.fromJson(json['id']), - name: serializer.fromJson(json['name']), - ); - } - @override - Map toJson({ValueSerializer? serializer}) { - serializer ??= driftRuntimeOptions.defaultSerializer; - return { - 'id': serializer.toJson(id), - 'name': serializer.toJson(name), - }; - } - - UserData copyWith({String? id, String? name}) => - UserData(id: id ?? this.id, name: name ?? this.name); - UserData copyWithCompanion(UserCompanion data) { - return UserData( - id: data.id.present ? data.id.value : this.id, - name: data.name.present ? data.name.value : this.name, - ); - } - - @override - String toString() { - return (StringBuffer('UserData(') - ..write('id: $id, ') - ..write('name: $name') - ..write(')')) - .toString(); - } - - @override - int get hashCode => Object.hash(id, name); - @override - bool operator ==(Object other) => - identical(this, other) || - (other is UserData && other.id == this.id && other.name == this.name); -} - -class UserCompanion extends UpdateCompanion { - final Value id; - final Value name; - final Value rowid; - const UserCompanion({ - this.id = const Value.absent(), - this.name = const Value.absent(), - this.rowid = const Value.absent(), - }); - UserCompanion.insert({ - required String id, - required String name, - this.rowid = const Value.absent(), - }) : id = Value(id), - name = Value(name); - static Insertable custom({ - Expression? id, - Expression? name, - Expression? rowid, - }) { - return RawValuesInsertable({ - if (id != null) 'id': id, - if (name != null) 'name': name, - if (rowid != null) 'rowid': rowid, - }); - } - - UserCompanion copyWith({ - Value? id, - Value? name, - Value? rowid, - }) { - return UserCompanion( - id: id ?? this.id, - name: name ?? this.name, - rowid: rowid ?? this.rowid, - ); - } - - @override - Map toColumns(bool nullToAbsent) { - final map = {}; - if (id.present) { - map['id'] = Variable(id.value); - } - if (name.present) { - map['name'] = Variable(name.value); - } - if (rowid.present) { - map['rowid'] = Variable(rowid.value); - } - return map; - } - - @override - String toString() { - return (StringBuffer('UserCompanion(') - ..write('id: $id, ') - ..write('name: $name, ') - ..write('rowid: $rowid') - ..write(')')) - .toString(); - } -} - -class $GroupTable extends Group with TableInfo<$GroupTable, GroupData> { - @override - final GeneratedDatabase attachedDatabase; - final String? _alias; - $GroupTable(this.attachedDatabase, [this._alias]); - static const VerificationMeta _idMeta = const VerificationMeta('id'); - @override - late final GeneratedColumn id = GeneratedColumn( - 'id', - aliasedName, - false, - type: DriftSqlType.string, - requiredDuringInsert: true, - ); - static const VerificationMeta _nameMeta = const VerificationMeta('name'); - @override - late final GeneratedColumn name = GeneratedColumn( - 'name', - aliasedName, - false, - type: DriftSqlType.string, - requiredDuringInsert: true, - ); - @override - List get $columns => [id, name]; - @override - String get aliasedName => _alias ?? actualTableName; - @override - String get actualTableName => $name; - static const String $name = 'group'; - @override - VerificationContext validateIntegrity( - Insertable instance, { - bool isInserting = false, - }) { - final context = VerificationContext(); - final data = instance.toColumns(true); - if (data.containsKey('id')) { - context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); - } else if (isInserting) { - context.missing(_idMeta); - } - if (data.containsKey('name')) { - context.handle( - _nameMeta, - name.isAcceptableOrUnknown(data['name']!, _nameMeta), - ); - } else if (isInserting) { - context.missing(_nameMeta); - } - return context; - } - - @override - Set get $primaryKey => {id}; - @override - GroupData map(Map data, {String? tablePrefix}) { - final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; - return GroupData( - id: attachedDatabase.typeMapping.read( - DriftSqlType.string, - data['${effectivePrefix}id'], - )!, - name: attachedDatabase.typeMapping.read( - DriftSqlType.string, - data['${effectivePrefix}name'], - )!, - ); - } - - @override - $GroupTable createAlias(String alias) { - return $GroupTable(attachedDatabase, alias); - } -} - -class GroupData extends DataClass implements Insertable { - final String id; - final String name; - const GroupData({required this.id, required this.name}); - @override - Map toColumns(bool nullToAbsent) { - final map = {}; - map['id'] = Variable(id); - map['name'] = Variable(name); - return map; - } - - GroupCompanion toCompanion(bool nullToAbsent) { - return GroupCompanion(id: Value(id), name: Value(name)); - } - - factory GroupData.fromJson( - Map json, { - ValueSerializer? serializer, - }) { - serializer ??= driftRuntimeOptions.defaultSerializer; - return GroupData( - id: serializer.fromJson(json['id']), - name: serializer.fromJson(json['name']), - ); - } - @override - Map toJson({ValueSerializer? serializer}) { - serializer ??= driftRuntimeOptions.defaultSerializer; - return { - 'id': serializer.toJson(id), - 'name': serializer.toJson(name), - }; - } - - GroupData copyWith({String? id, String? name}) => - GroupData(id: id ?? this.id, name: name ?? this.name); - GroupData copyWithCompanion(GroupCompanion data) { - return GroupData( - id: data.id.present ? data.id.value : this.id, - name: data.name.present ? data.name.value : this.name, - ); - } - - @override - String toString() { - return (StringBuffer('GroupData(') - ..write('id: $id, ') - ..write('name: $name') - ..write(')')) - .toString(); - } - - @override - int get hashCode => Object.hash(id, name); - @override - bool operator ==(Object other) => - identical(this, other) || - (other is GroupData && other.id == this.id && other.name == this.name); -} - -class GroupCompanion extends UpdateCompanion { - final Value id; - final Value name; - final Value rowid; - const GroupCompanion({ - this.id = const Value.absent(), - this.name = const Value.absent(), - this.rowid = const Value.absent(), - }); - GroupCompanion.insert({ - required String id, - required String name, - this.rowid = const Value.absent(), - }) : id = Value(id), - name = Value(name); - static Insertable custom({ - Expression? id, - Expression? name, - Expression? rowid, - }) { - return RawValuesInsertable({ - if (id != null) 'id': id, - if (name != null) 'name': name, - if (rowid != null) 'rowid': rowid, - }); - } - - GroupCompanion copyWith({ - Value? id, - Value? name, - Value? rowid, - }) { - return GroupCompanion( - id: id ?? this.id, - name: name ?? this.name, - rowid: rowid ?? this.rowid, - ); - } - - @override - Map toColumns(bool nullToAbsent) { - final map = {}; - if (id.present) { - map['id'] = Variable(id.value); - } - if (name.present) { - map['name'] = Variable(name.value); - } - if (rowid.present) { - map['rowid'] = Variable(rowid.value); - } - return map; - } - - @override - String toString() { - return (StringBuffer('GroupCompanion(') - ..write('id: $id, ') - ..write('name: $name, ') - ..write('rowid: $rowid') - ..write(')')) - .toString(); - } -} - -class $UserGroupTable extends UserGroup - with TableInfo<$UserGroupTable, UserGroupData> { - @override - final GeneratedDatabase attachedDatabase; - final String? _alias; - $UserGroupTable(this.attachedDatabase, [this._alias]); - static const VerificationMeta _userIdMeta = const VerificationMeta('userId'); - @override - late final GeneratedColumn userId = GeneratedColumn( - 'user_id', - aliasedName, - false, - type: DriftSqlType.string, - requiredDuringInsert: true, - defaultConstraints: GeneratedColumn.constraintIsAlways( - 'REFERENCES user (id)', - ), - ); - static const VerificationMeta _groupIdMeta = const VerificationMeta( - 'groupId', - ); - @override - late final GeneratedColumn groupId = GeneratedColumn( - 'group_id', - aliasedName, - false, - type: DriftSqlType.string, - requiredDuringInsert: true, - defaultConstraints: GeneratedColumn.constraintIsAlways( - 'REFERENCES "group" (id)', - ), - ); - @override - List get $columns => [userId, groupId]; - @override - String get aliasedName => _alias ?? actualTableName; - @override - String get actualTableName => $name; - static const String $name = 'user_group'; - @override - VerificationContext validateIntegrity( - Insertable instance, { - bool isInserting = false, - }) { - final context = VerificationContext(); - final data = instance.toColumns(true); - if (data.containsKey('user_id')) { - context.handle( - _userIdMeta, - userId.isAcceptableOrUnknown(data['user_id']!, _userIdMeta), - ); - } else if (isInserting) { - context.missing(_userIdMeta); - } - if (data.containsKey('group_id')) { - context.handle( - _groupIdMeta, - groupId.isAcceptableOrUnknown(data['group_id']!, _groupIdMeta), - ); - } else if (isInserting) { - context.missing(_groupIdMeta); - } - return context; - } - - @override - Set get $primaryKey => {userId, groupId}; - @override - UserGroupData map(Map data, {String? tablePrefix}) { - final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; - return UserGroupData( - userId: attachedDatabase.typeMapping.read( - DriftSqlType.string, - data['${effectivePrefix}user_id'], - )!, - groupId: attachedDatabase.typeMapping.read( - DriftSqlType.string, - data['${effectivePrefix}group_id'], - )!, - ); - } - - @override - $UserGroupTable createAlias(String alias) { - return $UserGroupTable(attachedDatabase, alias); - } -} - -class UserGroupData extends DataClass implements Insertable { - final String userId; - final String groupId; - const UserGroupData({required this.userId, required this.groupId}); - @override - Map toColumns(bool nullToAbsent) { - final map = {}; - map['user_id'] = Variable(userId); - map['group_id'] = Variable(groupId); - return map; - } - - UserGroupCompanion toCompanion(bool nullToAbsent) { - return UserGroupCompanion(userId: Value(userId), groupId: Value(groupId)); - } - - factory UserGroupData.fromJson( - Map json, { - ValueSerializer? serializer, - }) { - serializer ??= driftRuntimeOptions.defaultSerializer; - return UserGroupData( - userId: serializer.fromJson(json['userId']), - groupId: serializer.fromJson(json['groupId']), - ); - } - @override - Map toJson({ValueSerializer? serializer}) { - serializer ??= driftRuntimeOptions.defaultSerializer; - return { - 'userId': serializer.toJson(userId), - 'groupId': serializer.toJson(groupId), - }; - } - - UserGroupData copyWith({String? userId, String? groupId}) => UserGroupData( - userId: userId ?? this.userId, - groupId: groupId ?? this.groupId, - ); - UserGroupData copyWithCompanion(UserGroupCompanion data) { - return UserGroupData( - userId: data.userId.present ? data.userId.value : this.userId, - groupId: data.groupId.present ? data.groupId.value : this.groupId, - ); - } - - @override - String toString() { - return (StringBuffer('UserGroupData(') - ..write('userId: $userId, ') - ..write('groupId: $groupId') - ..write(')')) - .toString(); - } - - @override - int get hashCode => Object.hash(userId, groupId); - @override - bool operator ==(Object other) => - identical(this, other) || - (other is UserGroupData && - other.userId == this.userId && - other.groupId == this.groupId); -} - -class UserGroupCompanion extends UpdateCompanion { - final Value userId; - final Value groupId; - final Value rowid; - const UserGroupCompanion({ - this.userId = const Value.absent(), - this.groupId = const Value.absent(), - this.rowid = const Value.absent(), - }); - UserGroupCompanion.insert({ - required String userId, - required String groupId, - this.rowid = const Value.absent(), - }) : userId = Value(userId), - groupId = Value(groupId); - static Insertable custom({ - Expression? userId, - Expression? groupId, - Expression? rowid, - }) { - return RawValuesInsertable({ - if (userId != null) 'user_id': userId, - if (groupId != null) 'group_id': groupId, - if (rowid != null) 'rowid': rowid, - }); - } - - UserGroupCompanion copyWith({ - Value? userId, - Value? groupId, - Value? rowid, - }) { - return UserGroupCompanion( - userId: userId ?? this.userId, - groupId: groupId ?? this.groupId, - rowid: rowid ?? this.rowid, - ); - } - - @override - Map toColumns(bool nullToAbsent) { - final map = {}; - if (userId.present) { - map['user_id'] = Variable(userId.value); - } - if (groupId.present) { - map['group_id'] = Variable(groupId.value); - } - if (rowid.present) { - map['rowid'] = Variable(rowid.value); - } - return map; - } - - @override - String toString() { - return (StringBuffer('UserGroupCompanion(') - ..write('userId: $userId, ') - ..write('groupId: $groupId, ') - ..write('rowid: $rowid') - ..write(')')) - .toString(); - } -} - -abstract class _$AppDatabase extends GeneratedDatabase { - _$AppDatabase(QueryExecutor e) : super(e); - $AppDatabaseManager get managers => $AppDatabaseManager(this); - late final $UserTable user = $UserTable(this); - late final $GroupTable group = $GroupTable(this); - late final $UserGroupTable userGroup = $UserGroupTable(this); - @override - Iterable> get allTables => - allSchemaEntities.whereType>(); - @override - List get allSchemaEntities => [user, group, userGroup]; -} - -typedef $$UserTableCreateCompanionBuilder = - UserCompanion Function({ - required String id, - required String name, - Value rowid, - }); -typedef $$UserTableUpdateCompanionBuilder = - UserCompanion Function({ - Value id, - Value name, - Value rowid, - }); - -final class $$UserTableReferences - extends BaseReferences<_$AppDatabase, $UserTable, UserData> { - $$UserTableReferences(super.$_db, super.$_table, super.$_typedResult); - - static MultiTypedResultKey<$UserGroupTable, List> - _userGroupRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( - db.userGroup, - aliasName: $_aliasNameGenerator(db.user.id, db.userGroup.userId), - ); - - $$UserGroupTableProcessedTableManager get userGroupRefs { - final manager = $$UserGroupTableTableManager( - $_db, - $_db.userGroup, - ).filter((f) => f.userId.id.sqlEquals($_itemColumn('id')!)); - - final cache = $_typedResult.readTableOrNull(_userGroupRefsTable($_db)); - return ProcessedTableManager( - manager.$state.copyWith(prefetchedData: cache), - ); - } -} - -class $$UserTableFilterComposer extends Composer<_$AppDatabase, $UserTable> { - $$UserTableFilterComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - ColumnFilters get id => $composableBuilder( - column: $table.id, - builder: (column) => ColumnFilters(column), - ); - - ColumnFilters get name => $composableBuilder( - column: $table.name, - builder: (column) => ColumnFilters(column), - ); - - Expression userGroupRefs( - Expression Function($$UserGroupTableFilterComposer f) f, - ) { - final $$UserGroupTableFilterComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.id, - referencedTable: $db.userGroup, - getReferencedColumn: (t) => t.userId, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$UserGroupTableFilterComposer( - $db: $db, - $table: $db.userGroup, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return f(composer); - } -} - -class $$UserTableOrderingComposer extends Composer<_$AppDatabase, $UserTable> { - $$UserTableOrderingComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - ColumnOrderings get id => $composableBuilder( - column: $table.id, - builder: (column) => ColumnOrderings(column), - ); - - ColumnOrderings get name => $composableBuilder( - column: $table.name, - builder: (column) => ColumnOrderings(column), - ); -} - -class $$UserTableAnnotationComposer - extends Composer<_$AppDatabase, $UserTable> { - $$UserTableAnnotationComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - GeneratedColumn get id => - $composableBuilder(column: $table.id, builder: (column) => column); - - GeneratedColumn get name => - $composableBuilder(column: $table.name, builder: (column) => column); - - Expression userGroupRefs( - Expression Function($$UserGroupTableAnnotationComposer a) f, - ) { - final $$UserGroupTableAnnotationComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.id, - referencedTable: $db.userGroup, - getReferencedColumn: (t) => t.userId, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$UserGroupTableAnnotationComposer( - $db: $db, - $table: $db.userGroup, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return f(composer); - } -} - -class $$UserTableTableManager - extends - RootTableManager< - _$AppDatabase, - $UserTable, - UserData, - $$UserTableFilterComposer, - $$UserTableOrderingComposer, - $$UserTableAnnotationComposer, - $$UserTableCreateCompanionBuilder, - $$UserTableUpdateCompanionBuilder, - (UserData, $$UserTableReferences), - UserData, - PrefetchHooks Function({bool userGroupRefs}) - > { - $$UserTableTableManager(_$AppDatabase db, $UserTable table) - : super( - TableManagerState( - db: db, - table: table, - createFilteringComposer: () => - $$UserTableFilterComposer($db: db, $table: table), - createOrderingComposer: () => - $$UserTableOrderingComposer($db: db, $table: table), - createComputedFieldComposer: () => - $$UserTableAnnotationComposer($db: db, $table: table), - updateCompanionCallback: - ({ - Value id = const Value.absent(), - Value name = const Value.absent(), - Value rowid = const Value.absent(), - }) => UserCompanion(id: id, name: name, rowid: rowid), - createCompanionCallback: - ({ - required String id, - required String name, - Value rowid = const Value.absent(), - }) => UserCompanion.insert(id: id, name: name, rowid: rowid), - withReferenceMapper: (p0) => p0 - .map( - (e) => - (e.readTable(table), $$UserTableReferences(db, table, e)), - ) - .toList(), - prefetchHooksCallback: ({userGroupRefs = false}) { - return PrefetchHooks( - db: db, - explicitlyWatchedTables: [if (userGroupRefs) db.userGroup], - addJoins: null, - getPrefetchedDataCallback: (items) async { - return [ - if (userGroupRefs) - await $_getPrefetchedData< - UserData, - $UserTable, - UserGroupData - >( - currentTable: table, - referencedTable: $$UserTableReferences - ._userGroupRefsTable(db), - managerFromTypedResult: (p0) => - $$UserTableReferences(db, table, p0).userGroupRefs, - referencedItemsForCurrentItem: (item, referencedItems) => - referencedItems.where((e) => e.userId == item.id), - typedResults: items, - ), - ]; - }, - ); - }, - ), - ); -} - -typedef $$UserTableProcessedTableManager = - ProcessedTableManager< - _$AppDatabase, - $UserTable, - UserData, - $$UserTableFilterComposer, - $$UserTableOrderingComposer, - $$UserTableAnnotationComposer, - $$UserTableCreateCompanionBuilder, - $$UserTableUpdateCompanionBuilder, - (UserData, $$UserTableReferences), - UserData, - PrefetchHooks Function({bool userGroupRefs}) - >; -typedef $$GroupTableCreateCompanionBuilder = - GroupCompanion Function({ - required String id, - required String name, - Value rowid, - }); -typedef $$GroupTableUpdateCompanionBuilder = - GroupCompanion Function({ - Value id, - Value name, - Value rowid, - }); - -final class $$GroupTableReferences - extends BaseReferences<_$AppDatabase, $GroupTable, GroupData> { - $$GroupTableReferences(super.$_db, super.$_table, super.$_typedResult); - - static MultiTypedResultKey<$UserGroupTable, List> - _userGroupRefsTable(_$AppDatabase db) => MultiTypedResultKey.fromTable( - db.userGroup, - aliasName: $_aliasNameGenerator(db.group.id, db.userGroup.groupId), - ); - - $$UserGroupTableProcessedTableManager get userGroupRefs { - final manager = $$UserGroupTableTableManager( - $_db, - $_db.userGroup, - ).filter((f) => f.groupId.id.sqlEquals($_itemColumn('id')!)); - - final cache = $_typedResult.readTableOrNull(_userGroupRefsTable($_db)); - return ProcessedTableManager( - manager.$state.copyWith(prefetchedData: cache), - ); - } -} - -class $$GroupTableFilterComposer extends Composer<_$AppDatabase, $GroupTable> { - $$GroupTableFilterComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - ColumnFilters get id => $composableBuilder( - column: $table.id, - builder: (column) => ColumnFilters(column), - ); - - ColumnFilters get name => $composableBuilder( - column: $table.name, - builder: (column) => ColumnFilters(column), - ); - - Expression userGroupRefs( - Expression Function($$UserGroupTableFilterComposer f) f, - ) { - final $$UserGroupTableFilterComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.id, - referencedTable: $db.userGroup, - getReferencedColumn: (t) => t.groupId, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$UserGroupTableFilterComposer( - $db: $db, - $table: $db.userGroup, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return f(composer); - } -} - -class $$GroupTableOrderingComposer - extends Composer<_$AppDatabase, $GroupTable> { - $$GroupTableOrderingComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - ColumnOrderings get id => $composableBuilder( - column: $table.id, - builder: (column) => ColumnOrderings(column), - ); - - ColumnOrderings get name => $composableBuilder( - column: $table.name, - builder: (column) => ColumnOrderings(column), - ); -} - -class $$GroupTableAnnotationComposer - extends Composer<_$AppDatabase, $GroupTable> { - $$GroupTableAnnotationComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - GeneratedColumn get id => - $composableBuilder(column: $table.id, builder: (column) => column); - - GeneratedColumn get name => - $composableBuilder(column: $table.name, builder: (column) => column); - - Expression userGroupRefs( - Expression Function($$UserGroupTableAnnotationComposer a) f, - ) { - final $$UserGroupTableAnnotationComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.id, - referencedTable: $db.userGroup, - getReferencedColumn: (t) => t.groupId, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$UserGroupTableAnnotationComposer( - $db: $db, - $table: $db.userGroup, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return f(composer); - } -} - -class $$GroupTableTableManager - extends - RootTableManager< - _$AppDatabase, - $GroupTable, - GroupData, - $$GroupTableFilterComposer, - $$GroupTableOrderingComposer, - $$GroupTableAnnotationComposer, - $$GroupTableCreateCompanionBuilder, - $$GroupTableUpdateCompanionBuilder, - (GroupData, $$GroupTableReferences), - GroupData, - PrefetchHooks Function({bool userGroupRefs}) - > { - $$GroupTableTableManager(_$AppDatabase db, $GroupTable table) - : super( - TableManagerState( - db: db, - table: table, - createFilteringComposer: () => - $$GroupTableFilterComposer($db: db, $table: table), - createOrderingComposer: () => - $$GroupTableOrderingComposer($db: db, $table: table), - createComputedFieldComposer: () => - $$GroupTableAnnotationComposer($db: db, $table: table), - updateCompanionCallback: - ({ - Value id = const Value.absent(), - Value name = const Value.absent(), - Value rowid = const Value.absent(), - }) => GroupCompanion(id: id, name: name, rowid: rowid), - createCompanionCallback: - ({ - required String id, - required String name, - Value rowid = const Value.absent(), - }) => GroupCompanion.insert(id: id, name: name, rowid: rowid), - withReferenceMapper: (p0) => p0 - .map( - (e) => - (e.readTable(table), $$GroupTableReferences(db, table, e)), - ) - .toList(), - prefetchHooksCallback: ({userGroupRefs = false}) { - return PrefetchHooks( - db: db, - explicitlyWatchedTables: [if (userGroupRefs) db.userGroup], - addJoins: null, - getPrefetchedDataCallback: (items) async { - return [ - if (userGroupRefs) - await $_getPrefetchedData< - GroupData, - $GroupTable, - UserGroupData - >( - currentTable: table, - referencedTable: $$GroupTableReferences - ._userGroupRefsTable(db), - managerFromTypedResult: (p0) => - $$GroupTableReferences(db, table, p0).userGroupRefs, - referencedItemsForCurrentItem: (item, referencedItems) => - referencedItems.where((e) => e.groupId == item.id), - typedResults: items, - ), - ]; - }, - ); - }, - ), - ); -} - -typedef $$GroupTableProcessedTableManager = - ProcessedTableManager< - _$AppDatabase, - $GroupTable, - GroupData, - $$GroupTableFilterComposer, - $$GroupTableOrderingComposer, - $$GroupTableAnnotationComposer, - $$GroupTableCreateCompanionBuilder, - $$GroupTableUpdateCompanionBuilder, - (GroupData, $$GroupTableReferences), - GroupData, - PrefetchHooks Function({bool userGroupRefs}) - >; -typedef $$UserGroupTableCreateCompanionBuilder = - UserGroupCompanion Function({ - required String userId, - required String groupId, - Value rowid, - }); -typedef $$UserGroupTableUpdateCompanionBuilder = - UserGroupCompanion Function({ - Value userId, - Value groupId, - Value rowid, - }); - -final class $$UserGroupTableReferences - extends BaseReferences<_$AppDatabase, $UserGroupTable, UserGroupData> { - $$UserGroupTableReferences(super.$_db, super.$_table, super.$_typedResult); - - static $UserTable _userIdTable(_$AppDatabase db) => db.user.createAlias( - $_aliasNameGenerator(db.userGroup.userId, db.user.id), - ); - - $$UserTableProcessedTableManager get userId { - final $_column = $_itemColumn('user_id')!; - - final manager = $$UserTableTableManager( - $_db, - $_db.user, - ).filter((f) => f.id.sqlEquals($_column)); - final item = $_typedResult.readTableOrNull(_userIdTable($_db)); - if (item == null) return manager; - return ProcessedTableManager( - manager.$state.copyWith(prefetchedData: [item]), - ); - } - - static $GroupTable _groupIdTable(_$AppDatabase db) => db.group.createAlias( - $_aliasNameGenerator(db.userGroup.groupId, db.group.id), - ); - - $$GroupTableProcessedTableManager get groupId { - final $_column = $_itemColumn('group_id')!; - - final manager = $$GroupTableTableManager( - $_db, - $_db.group, - ).filter((f) => f.id.sqlEquals($_column)); - final item = $_typedResult.readTableOrNull(_groupIdTable($_db)); - if (item == null) return manager; - return ProcessedTableManager( - manager.$state.copyWith(prefetchedData: [item]), - ); - } -} - -class $$UserGroupTableFilterComposer - extends Composer<_$AppDatabase, $UserGroupTable> { - $$UserGroupTableFilterComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - $$UserTableFilterComposer get userId { - final $$UserTableFilterComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.userId, - referencedTable: $db.user, - getReferencedColumn: (t) => t.id, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$UserTableFilterComposer( - $db: $db, - $table: $db.user, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return composer; - } - - $$GroupTableFilterComposer get groupId { - final $$GroupTableFilterComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.groupId, - referencedTable: $db.group, - getReferencedColumn: (t) => t.id, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$GroupTableFilterComposer( - $db: $db, - $table: $db.group, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return composer; - } -} - -class $$UserGroupTableOrderingComposer - extends Composer<_$AppDatabase, $UserGroupTable> { - $$UserGroupTableOrderingComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - $$UserTableOrderingComposer get userId { - final $$UserTableOrderingComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.userId, - referencedTable: $db.user, - getReferencedColumn: (t) => t.id, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$UserTableOrderingComposer( - $db: $db, - $table: $db.user, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return composer; - } - - $$GroupTableOrderingComposer get groupId { - final $$GroupTableOrderingComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.groupId, - referencedTable: $db.group, - getReferencedColumn: (t) => t.id, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$GroupTableOrderingComposer( - $db: $db, - $table: $db.group, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return composer; - } -} - -class $$UserGroupTableAnnotationComposer - extends Composer<_$AppDatabase, $UserGroupTable> { - $$UserGroupTableAnnotationComposer({ - required super.$db, - required super.$table, - super.joinBuilder, - super.$addJoinBuilderToRootComposer, - super.$removeJoinBuilderFromRootComposer, - }); - $$UserTableAnnotationComposer get userId { - final $$UserTableAnnotationComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.userId, - referencedTable: $db.user, - getReferencedColumn: (t) => t.id, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$UserTableAnnotationComposer( - $db: $db, - $table: $db.user, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return composer; - } - - $$GroupTableAnnotationComposer get groupId { - final $$GroupTableAnnotationComposer composer = $composerBuilder( - composer: this, - getCurrentColumn: (t) => t.groupId, - referencedTable: $db.group, - getReferencedColumn: (t) => t.id, - builder: - ( - joinBuilder, { - $addJoinBuilderToRootComposer, - $removeJoinBuilderFromRootComposer, - }) => $$GroupTableAnnotationComposer( - $db: $db, - $table: $db.group, - $addJoinBuilderToRootComposer: $addJoinBuilderToRootComposer, - joinBuilder: joinBuilder, - $removeJoinBuilderFromRootComposer: - $removeJoinBuilderFromRootComposer, - ), - ); - return composer; - } -} - -class $$UserGroupTableTableManager - extends - RootTableManager< - _$AppDatabase, - $UserGroupTable, - UserGroupData, - $$UserGroupTableFilterComposer, - $$UserGroupTableOrderingComposer, - $$UserGroupTableAnnotationComposer, - $$UserGroupTableCreateCompanionBuilder, - $$UserGroupTableUpdateCompanionBuilder, - (UserGroupData, $$UserGroupTableReferences), - UserGroupData, - PrefetchHooks Function({bool userId, bool groupId}) - > { - $$UserGroupTableTableManager(_$AppDatabase db, $UserGroupTable table) - : super( - TableManagerState( - db: db, - table: table, - createFilteringComposer: () => - $$UserGroupTableFilterComposer($db: db, $table: table), - createOrderingComposer: () => - $$UserGroupTableOrderingComposer($db: db, $table: table), - createComputedFieldComposer: () => - $$UserGroupTableAnnotationComposer($db: db, $table: table), - updateCompanionCallback: - ({ - Value userId = const Value.absent(), - Value groupId = const Value.absent(), - Value rowid = const Value.absent(), - }) => UserGroupCompanion( - userId: userId, - groupId: groupId, - rowid: rowid, - ), - createCompanionCallback: - ({ - required String userId, - required String groupId, - Value rowid = const Value.absent(), - }) => UserGroupCompanion.insert( - userId: userId, - groupId: groupId, - rowid: rowid, - ), - withReferenceMapper: (p0) => p0 - .map( - (e) => ( - e.readTable(table), - $$UserGroupTableReferences(db, table, e), - ), - ) - .toList(), - prefetchHooksCallback: ({userId = false, groupId = false}) { - return PrefetchHooks( - db: db, - explicitlyWatchedTables: [], - addJoins: - < - T extends TableManagerState< - dynamic, - dynamic, - dynamic, - dynamic, - dynamic, - dynamic, - dynamic, - dynamic, - dynamic, - dynamic, - dynamic - > - >(state) { - if (userId) { - state = - state.withJoin( - currentTable: table, - currentColumn: table.userId, - referencedTable: $$UserGroupTableReferences - ._userIdTable(db), - referencedColumn: $$UserGroupTableReferences - ._userIdTable(db) - .id, - ) - as T; - } - if (groupId) { - state = - state.withJoin( - currentTable: table, - currentColumn: table.groupId, - referencedTable: $$UserGroupTableReferences - ._groupIdTable(db), - referencedColumn: $$UserGroupTableReferences - ._groupIdTable(db) - .id, - ) - as T; - } - - return state; - }, - getPrefetchedDataCallback: (items) async { - return []; - }, - ); - }, - ), - ); -} - -typedef $$UserGroupTableProcessedTableManager = - ProcessedTableManager< - _$AppDatabase, - $UserGroupTable, - UserGroupData, - $$UserGroupTableFilterComposer, - $$UserGroupTableOrderingComposer, - $$UserGroupTableAnnotationComposer, - $$UserGroupTableCreateCompanionBuilder, - $$UserGroupTableUpdateCompanionBuilder, - (UserGroupData, $$UserGroupTableReferences), - UserGroupData, - PrefetchHooks Function({bool userId, bool groupId}) - >; - -class $AppDatabaseManager { - final _$AppDatabase _db; - $AppDatabaseManager(this._db); - $$UserTableTableManager get user => $$UserTableTableManager(_db, _db.user); - $$GroupTableTableManager get group => - $$GroupTableTableManager(_db, _db.group); - $$UserGroupTableTableManager get userGroup => - $$UserGroupTableTableManager(_db, _db.userGroup); -} diff --git a/lib/data/db/database.dart b/lib/data/db/database.dart new file mode 100644 index 0000000..6d4dedc --- /dev/null +++ b/lib/data/db/database.dart @@ -0,0 +1,31 @@ +import 'package:drift/drift.dart'; +import 'package:drift_flutter/drift_flutter.dart'; +import 'package:game_tracker/data/dao/group_dao.dart'; +import 'package:game_tracker/data/dao/player_dao.dart'; +import 'package:game_tracker/data/dao/player_group_dao.dart'; +import 'package:game_tracker/data/db/tables/group_table.dart'; +import 'package:game_tracker/data/db/tables/player_group_table.dart'; +import 'package:game_tracker/data/db/tables/player_table.dart'; +import 'package:path_provider/path_provider.dart'; + +part 'database.g.dart'; + +@DriftDatabase( + tables: [PlayerTable, GroupTable, PlayerGroupTable], + daos: [GroupDao, PlayerDao, PlayerGroupDao], +) +class AppDatabase extends _$AppDatabase { + AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection()); + + @override + int get schemaVersion => 1; + + static QueryExecutor _openConnection() { + return driftDatabase( + name: 'gametracker_db', + native: const DriftNativeOptions( + databaseDirectory: getApplicationSupportDirectory, + ), + ); + } +} diff --git a/lib/data/db/database.g.dart b/lib/data/db/database.g.dart new file mode 100644 index 0000000..150b8a3 --- /dev/null +++ b/lib/data/db/database.g.dart @@ -0,0 +1,1092 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'database.dart'; + +// ignore_for_file: type=lint +class $PlayerTableTable extends PlayerTable + with TableInfo<$PlayerTableTable, PlayerTableData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $PlayerTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + @override + List get $columns => [id, name]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'player_table'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } else if (isInserting) { + context.missing(_nameMeta); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + PlayerTableData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return PlayerTableData( + id: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}id'], + )!, + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + )!, + ); + } + + @override + $PlayerTableTable createAlias(String alias) { + return $PlayerTableTable(attachedDatabase, alias); + } +} + +class PlayerTableData extends DataClass implements Insertable { + final String id; + final String name; + const PlayerTableData({required this.id, required this.name}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['name'] = Variable(name); + return map; + } + + PlayerTableCompanion toCompanion(bool nullToAbsent) { + return PlayerTableCompanion(id: Value(id), name: Value(name)); + } + + factory PlayerTableData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return PlayerTableData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + }; + } + + PlayerTableData copyWith({String? id, String? name}) => + PlayerTableData(id: id ?? this.id, name: name ?? this.name); + PlayerTableData copyWithCompanion(PlayerTableCompanion data) { + return PlayerTableData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + ); + } + + @override + String toString() { + return (StringBuffer('PlayerTableData(') + ..write('id: $id, ') + ..write('name: $name') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, name); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is PlayerTableData && + other.id == this.id && + other.name == this.name); +} + +class PlayerTableCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value rowid; + const PlayerTableCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.rowid = const Value.absent(), + }); + PlayerTableCompanion.insert({ + required String id, + required String name, + this.rowid = const Value.absent(), + }) : id = Value(id), + name = Value(name); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (rowid != null) 'rowid': rowid, + }); + } + + PlayerTableCompanion copyWith({ + Value? id, + Value? name, + Value? rowid, + }) { + return PlayerTableCompanion( + id: id ?? this.id, + name: name ?? this.name, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('PlayerTableCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $GroupTableTable extends GroupTable + with TableInfo<$GroupTableTable, GroupTableData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $GroupTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _nameMeta = const VerificationMeta('name'); + @override + late final GeneratedColumn name = GeneratedColumn( + 'name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + @override + List get $columns => [id, name]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'group_table'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + if (data.containsKey('name')) { + context.handle( + _nameMeta, + name.isAcceptableOrUnknown(data['name']!, _nameMeta), + ); + } else if (isInserting) { + context.missing(_nameMeta); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + GroupTableData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return GroupTableData( + id: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}id'], + )!, + name: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}name'], + )!, + ); + } + + @override + $GroupTableTable createAlias(String alias) { + return $GroupTableTable(attachedDatabase, alias); + } +} + +class GroupTableData extends DataClass implements Insertable { + final String id; + final String name; + const GroupTableData({required this.id, required this.name}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['name'] = Variable(name); + return map; + } + + GroupTableCompanion toCompanion(bool nullToAbsent) { + return GroupTableCompanion(id: Value(id), name: Value(name)); + } + + factory GroupTableData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return GroupTableData( + id: serializer.fromJson(json['id']), + name: serializer.fromJson(json['name']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'name': serializer.toJson(name), + }; + } + + GroupTableData copyWith({String? id, String? name}) => + GroupTableData(id: id ?? this.id, name: name ?? this.name); + GroupTableData copyWithCompanion(GroupTableCompanion data) { + return GroupTableData( + id: data.id.present ? data.id.value : this.id, + name: data.name.present ? data.name.value : this.name, + ); + } + + @override + String toString() { + return (StringBuffer('GroupTableData(') + ..write('id: $id, ') + ..write('name: $name') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, name); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is GroupTableData && + other.id == this.id && + other.name == this.name); +} + +class GroupTableCompanion extends UpdateCompanion { + final Value id; + final Value name; + final Value rowid; + const GroupTableCompanion({ + this.id = const Value.absent(), + this.name = const Value.absent(), + this.rowid = const Value.absent(), + }); + GroupTableCompanion.insert({ + required String id, + required String name, + this.rowid = const Value.absent(), + }) : id = Value(id), + name = Value(name); + static Insertable custom({ + Expression? id, + Expression? name, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (name != null) 'name': name, + if (rowid != null) 'rowid': rowid, + }); + } + + GroupTableCompanion copyWith({ + Value? id, + Value? name, + Value? rowid, + }) { + return GroupTableCompanion( + id: id ?? this.id, + name: name ?? this.name, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (name.present) { + map['name'] = Variable(name.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('GroupTableCompanion(') + ..write('id: $id, ') + ..write('name: $name, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $PlayerGroupTableTable extends PlayerGroupTable + with TableInfo<$PlayerGroupTableTable, PlayerGroupTableData> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $PlayerGroupTableTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _userIdMeta = const VerificationMeta('userId'); + @override + late final GeneratedColumn userId = GeneratedColumn( + 'user_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _groupIdMeta = const VerificationMeta( + 'groupId', + ); + @override + late final GeneratedColumn groupId = GeneratedColumn( + 'group_id', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + @override + List get $columns => [userId, groupId]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'player_group_table'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('user_id')) { + context.handle( + _userIdMeta, + userId.isAcceptableOrUnknown(data['user_id']!, _userIdMeta), + ); + } else if (isInserting) { + context.missing(_userIdMeta); + } + if (data.containsKey('group_id')) { + context.handle( + _groupIdMeta, + groupId.isAcceptableOrUnknown(data['group_id']!, _groupIdMeta), + ); + } else if (isInserting) { + context.missing(_groupIdMeta); + } + return context; + } + + @override + Set get $primaryKey => {userId, groupId}; + @override + PlayerGroupTableData map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return PlayerGroupTableData( + userId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}user_id'], + )!, + groupId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}group_id'], + )!, + ); + } + + @override + $PlayerGroupTableTable createAlias(String alias) { + return $PlayerGroupTableTable(attachedDatabase, alias); + } +} + +class PlayerGroupTableData extends DataClass + implements Insertable { + final String userId; + final String groupId; + const PlayerGroupTableData({required this.userId, required this.groupId}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['user_id'] = Variable(userId); + map['group_id'] = Variable(groupId); + return map; + } + + PlayerGroupTableCompanion toCompanion(bool nullToAbsent) { + return PlayerGroupTableCompanion( + userId: Value(userId), + groupId: Value(groupId), + ); + } + + factory PlayerGroupTableData.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return PlayerGroupTableData( + userId: serializer.fromJson(json['userId']), + groupId: serializer.fromJson(json['groupId']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'userId': serializer.toJson(userId), + 'groupId': serializer.toJson(groupId), + }; + } + + PlayerGroupTableData copyWith({String? userId, String? groupId}) => + PlayerGroupTableData( + userId: userId ?? this.userId, + groupId: groupId ?? this.groupId, + ); + PlayerGroupTableData copyWithCompanion(PlayerGroupTableCompanion data) { + return PlayerGroupTableData( + userId: data.userId.present ? data.userId.value : this.userId, + groupId: data.groupId.present ? data.groupId.value : this.groupId, + ); + } + + @override + String toString() { + return (StringBuffer('PlayerGroupTableData(') + ..write('userId: $userId, ') + ..write('groupId: $groupId') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(userId, groupId); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is PlayerGroupTableData && + other.userId == this.userId && + other.groupId == this.groupId); +} + +class PlayerGroupTableCompanion extends UpdateCompanion { + final Value userId; + final Value groupId; + final Value rowid; + const PlayerGroupTableCompanion({ + this.userId = const Value.absent(), + this.groupId = const Value.absent(), + this.rowid = const Value.absent(), + }); + PlayerGroupTableCompanion.insert({ + required String userId, + required String groupId, + this.rowid = const Value.absent(), + }) : userId = Value(userId), + groupId = Value(groupId); + static Insertable custom({ + Expression? userId, + Expression? groupId, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (userId != null) 'user_id': userId, + if (groupId != null) 'group_id': groupId, + if (rowid != null) 'rowid': rowid, + }); + } + + PlayerGroupTableCompanion copyWith({ + Value? userId, + Value? groupId, + Value? rowid, + }) { + return PlayerGroupTableCompanion( + userId: userId ?? this.userId, + groupId: groupId ?? this.groupId, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (userId.present) { + map['user_id'] = Variable(userId.value); + } + if (groupId.present) { + map['group_id'] = Variable(groupId.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('PlayerGroupTableCompanion(') + ..write('userId: $userId, ') + ..write('groupId: $groupId, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +abstract class _$AppDatabase extends GeneratedDatabase { + _$AppDatabase(QueryExecutor e) : super(e); + $AppDatabaseManager get managers => $AppDatabaseManager(this); + late final $PlayerTableTable playerTable = $PlayerTableTable(this); + late final $GroupTableTable groupTable = $GroupTableTable(this); + late final $PlayerGroupTableTable playerGroupTable = $PlayerGroupTableTable( + this, + ); + late final GroupDao groupDao = GroupDao(this as AppDatabase); + late final PlayerDao playerDao = PlayerDao(this as AppDatabase); + late final PlayerGroupDao playerGroupDao = PlayerGroupDao( + this as AppDatabase, + ); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [ + playerTable, + groupTable, + playerGroupTable, + ]; +} + +typedef $$PlayerTableTableCreateCompanionBuilder = + PlayerTableCompanion Function({ + required String id, + required String name, + Value rowid, + }); +typedef $$PlayerTableTableUpdateCompanionBuilder = + PlayerTableCompanion Function({ + Value id, + Value name, + Value rowid, + }); + +class $$PlayerTableTableFilterComposer + extends Composer<_$AppDatabase, $PlayerTableTable> { + $$PlayerTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); +} + +class $$PlayerTableTableOrderingComposer + extends Composer<_$AppDatabase, $PlayerTableTable> { + $$PlayerTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$PlayerTableTableAnnotationComposer + extends Composer<_$AppDatabase, $PlayerTableTable> { + $$PlayerTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); +} + +class $$PlayerTableTableTableManager + extends + RootTableManager< + _$AppDatabase, + $PlayerTableTable, + PlayerTableData, + $$PlayerTableTableFilterComposer, + $$PlayerTableTableOrderingComposer, + $$PlayerTableTableAnnotationComposer, + $$PlayerTableTableCreateCompanionBuilder, + $$PlayerTableTableUpdateCompanionBuilder, + ( + PlayerTableData, + BaseReferences<_$AppDatabase, $PlayerTableTable, PlayerTableData>, + ), + PlayerTableData, + PrefetchHooks Function() + > { + $$PlayerTableTableTableManager(_$AppDatabase db, $PlayerTableTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$PlayerTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$PlayerTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$PlayerTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + Value rowid = const Value.absent(), + }) => PlayerTableCompanion(id: id, name: name, rowid: rowid), + createCompanionCallback: + ({ + required String id, + required String name, + Value rowid = const Value.absent(), + }) => + PlayerTableCompanion.insert(id: id, name: name, rowid: rowid), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$PlayerTableTableProcessedTableManager = + ProcessedTableManager< + _$AppDatabase, + $PlayerTableTable, + PlayerTableData, + $$PlayerTableTableFilterComposer, + $$PlayerTableTableOrderingComposer, + $$PlayerTableTableAnnotationComposer, + $$PlayerTableTableCreateCompanionBuilder, + $$PlayerTableTableUpdateCompanionBuilder, + ( + PlayerTableData, + BaseReferences<_$AppDatabase, $PlayerTableTable, PlayerTableData>, + ), + PlayerTableData, + PrefetchHooks Function() + >; +typedef $$GroupTableTableCreateCompanionBuilder = + GroupTableCompanion Function({ + required String id, + required String name, + Value rowid, + }); +typedef $$GroupTableTableUpdateCompanionBuilder = + GroupTableCompanion Function({ + Value id, + Value name, + Value rowid, + }); + +class $$GroupTableTableFilterComposer + extends Composer<_$AppDatabase, $GroupTableTable> { + $$GroupTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnFilters(column), + ); +} + +class $$GroupTableTableOrderingComposer + extends Composer<_$AppDatabase, $GroupTableTable> { + $$GroupTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get name => $composableBuilder( + column: $table.name, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$GroupTableTableAnnotationComposer + extends Composer<_$AppDatabase, $GroupTableTable> { + $$GroupTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get name => + $composableBuilder(column: $table.name, builder: (column) => column); +} + +class $$GroupTableTableTableManager + extends + RootTableManager< + _$AppDatabase, + $GroupTableTable, + GroupTableData, + $$GroupTableTableFilterComposer, + $$GroupTableTableOrderingComposer, + $$GroupTableTableAnnotationComposer, + $$GroupTableTableCreateCompanionBuilder, + $$GroupTableTableUpdateCompanionBuilder, + ( + GroupTableData, + BaseReferences<_$AppDatabase, $GroupTableTable, GroupTableData>, + ), + GroupTableData, + PrefetchHooks Function() + > { + $$GroupTableTableTableManager(_$AppDatabase db, $GroupTableTable table) + : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$GroupTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$GroupTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$GroupTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value name = const Value.absent(), + Value rowid = const Value.absent(), + }) => GroupTableCompanion(id: id, name: name, rowid: rowid), + createCompanionCallback: + ({ + required String id, + required String name, + Value rowid = const Value.absent(), + }) => + GroupTableCompanion.insert(id: id, name: name, rowid: rowid), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$GroupTableTableProcessedTableManager = + ProcessedTableManager< + _$AppDatabase, + $GroupTableTable, + GroupTableData, + $$GroupTableTableFilterComposer, + $$GroupTableTableOrderingComposer, + $$GroupTableTableAnnotationComposer, + $$GroupTableTableCreateCompanionBuilder, + $$GroupTableTableUpdateCompanionBuilder, + ( + GroupTableData, + BaseReferences<_$AppDatabase, $GroupTableTable, GroupTableData>, + ), + GroupTableData, + PrefetchHooks Function() + >; +typedef $$PlayerGroupTableTableCreateCompanionBuilder = + PlayerGroupTableCompanion Function({ + required String userId, + required String groupId, + Value rowid, + }); +typedef $$PlayerGroupTableTableUpdateCompanionBuilder = + PlayerGroupTableCompanion Function({ + Value userId, + Value groupId, + Value rowid, + }); + +class $$PlayerGroupTableTableFilterComposer + extends Composer<_$AppDatabase, $PlayerGroupTableTable> { + $$PlayerGroupTableTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get groupId => $composableBuilder( + column: $table.groupId, + builder: (column) => ColumnFilters(column), + ); +} + +class $$PlayerGroupTableTableOrderingComposer + extends Composer<_$AppDatabase, $PlayerGroupTableTable> { + $$PlayerGroupTableTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get userId => $composableBuilder( + column: $table.userId, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get groupId => $composableBuilder( + column: $table.groupId, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$PlayerGroupTableTableAnnotationComposer + extends Composer<_$AppDatabase, $PlayerGroupTableTable> { + $$PlayerGroupTableTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get userId => + $composableBuilder(column: $table.userId, builder: (column) => column); + + GeneratedColumn get groupId => + $composableBuilder(column: $table.groupId, builder: (column) => column); +} + +class $$PlayerGroupTableTableTableManager + extends + RootTableManager< + _$AppDatabase, + $PlayerGroupTableTable, + PlayerGroupTableData, + $$PlayerGroupTableTableFilterComposer, + $$PlayerGroupTableTableOrderingComposer, + $$PlayerGroupTableTableAnnotationComposer, + $$PlayerGroupTableTableCreateCompanionBuilder, + $$PlayerGroupTableTableUpdateCompanionBuilder, + ( + PlayerGroupTableData, + BaseReferences< + _$AppDatabase, + $PlayerGroupTableTable, + PlayerGroupTableData + >, + ), + PlayerGroupTableData, + PrefetchHooks Function() + > { + $$PlayerGroupTableTableTableManager( + _$AppDatabase db, + $PlayerGroupTableTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$PlayerGroupTableTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$PlayerGroupTableTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$PlayerGroupTableTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value userId = const Value.absent(), + Value groupId = const Value.absent(), + Value rowid = const Value.absent(), + }) => PlayerGroupTableCompanion( + userId: userId, + groupId: groupId, + rowid: rowid, + ), + createCompanionCallback: + ({ + required String userId, + required String groupId, + Value rowid = const Value.absent(), + }) => PlayerGroupTableCompanion.insert( + userId: userId, + groupId: groupId, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$PlayerGroupTableTableProcessedTableManager = + ProcessedTableManager< + _$AppDatabase, + $PlayerGroupTableTable, + PlayerGroupTableData, + $$PlayerGroupTableTableFilterComposer, + $$PlayerGroupTableTableOrderingComposer, + $$PlayerGroupTableTableAnnotationComposer, + $$PlayerGroupTableTableCreateCompanionBuilder, + $$PlayerGroupTableTableUpdateCompanionBuilder, + ( + PlayerGroupTableData, + BaseReferences< + _$AppDatabase, + $PlayerGroupTableTable, + PlayerGroupTableData + >, + ), + PlayerGroupTableData, + PrefetchHooks Function() + >; + +class $AppDatabaseManager { + final _$AppDatabase _db; + $AppDatabaseManager(this._db); + $$PlayerTableTableTableManager get playerTable => + $$PlayerTableTableTableManager(_db, _db.playerTable); + $$GroupTableTableTableManager get groupTable => + $$GroupTableTableTableManager(_db, _db.groupTable); + $$PlayerGroupTableTableTableManager get playerGroupTable => + $$PlayerGroupTableTableTableManager(_db, _db.playerGroupTable); +} diff --git a/lib/data/db/tables/group_table.dart b/lib/data/db/tables/group_table.dart new file mode 100644 index 0000000..dc9335d --- /dev/null +++ b/lib/data/db/tables/group_table.dart @@ -0,0 +1,9 @@ +import 'package:drift/drift.dart'; + +class GroupTable extends Table { + TextColumn get id => text()(); + TextColumn get name => text()(); + + @override + Set> get primaryKey => {id}; +} diff --git a/lib/data/db/tables/player_group_table.dart b/lib/data/db/tables/player_group_table.dart new file mode 100644 index 0000000..a045789 --- /dev/null +++ b/lib/data/db/tables/player_group_table.dart @@ -0,0 +1,11 @@ +import 'package:drift/drift.dart'; +import 'package:game_tracker/data/methods/db/tables/group_table.dart'; +import 'package:game_tracker/data/methods/db/tables/user_table.dart'; + +class PlayerGroupTable extends Table { + TextColumn get userId => text().references(UserTable, #id)(); + TextColumn get groupId => text().references(GroupTable, #id)(); + + @override + Set> get primaryKey => {userId, groupId}; +} diff --git a/lib/data/db/tables/player_table.dart b/lib/data/db/tables/player_table.dart new file mode 100644 index 0000000..3d97459 --- /dev/null +++ b/lib/data/db/tables/player_table.dart @@ -0,0 +1,9 @@ +import 'package:drift/drift.dart'; + +class PlayerTable extends Table { + TextColumn get id => text()(); + TextColumn get name => text()(); + + @override + Set> get primaryKey => {id}; +} diff --git a/lib/data/dto/game.dart b/lib/data/dto/game.dart new file mode 100644 index 0000000..7457b54 --- /dev/null +++ b/lib/data/dto/game.dart @@ -0,0 +1,6 @@ +class Game { + final String id; + final String name; + + Game({required this.id, required this.name}); +} diff --git a/lib/data/dto/group.dart b/lib/data/dto/group.dart new file mode 100644 index 0000000..316b712 --- /dev/null +++ b/lib/data/dto/group.dart @@ -0,0 +1,9 @@ +import 'package:game_tracker/data/methods/dto/player.dart'; + +class Group { + final String id; + final String name; + final List members; + + Group({required this.id, required this.name, required this.members}); +} diff --git a/lib/data/dto/player.dart b/lib/data/dto/player.dart new file mode 100644 index 0000000..331645a --- /dev/null +++ b/lib/data/dto/player.dart @@ -0,0 +1,6 @@ +class Player { + final String id; + final String username; + + Player({required this.id, required this.username}); +} diff --git a/lib/data/methods/group.dart b/lib/data/methods/group.dart deleted file mode 100644 index a5346ba..0000000 --- a/lib/data/methods/group.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:game_tracker/data/database.dart'; -import 'package:drift/drift.dart'; - -extension GroupMethods on AppDatabase { - Future> getAllGroups() async { - return await select(group).get(); - } - - Future getGroupById(String id) async { - return await (select(group)..where((g) => g.id.equals(id))).getSingle(); - } - - Future addGroup(String id, String name) async { - await into(group).insert( - GroupCompanion.insert(id: id, name: name), - ); - } - - Future deleteGroup(String id) async { - await (delete(group)..where((g) => g.id.equals(id))).go(); - } - - Future updateGroupname(String id, String newName) async { - await (update(group)..where((g) => g.id.equals(id))).write( - GroupCompanion(name: Value(newName)), - ); - } -} \ No newline at end of file diff --git a/lib/data/methods/user_group.dart b/lib/data/methods/user_group.dart deleted file mode 100644 index 206c1f0..0000000 --- a/lib/data/methods/user_group.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:game_tracker/data/database.dart'; -import 'package:drift/drift.dart'; - -extension UserGroupMethods on AppDatabase { - Future> getAllUsersAndGroups() async { - return await select(userGroup).get(); - } - - Future> getUsersGroups(String userId) async { - return await (select(userGroup)..where((uG) => uG.userId.equals(userId))).get(); - } - - Future> getGroupsUsers(String groupId) async { - return await (select(userGroup)..where((uG) => uG.groupId.equals(groupId))).get(); - } - - Future addUserToGroup(String userId, String groupId) async { - await into(userGroup).insert( - UserGroupCompanion.insert(userId: userId, groupId: groupId), - ); - } - - Future removeUserFromGroup(String userId, String groupId) async { - await (delete(userGroup)..where((uG) => uG.userId.equals(userId) & uG.groupId.equals(groupId))).go(); - } -} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 261ff1b..dd19f34 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:game_tracker/presentation/views/main_menu/custom_navigation_bar.dart'; import 'package:game_tracker/core/custom_theme.dart'; import 'package:game_tracker/data/database.dart'; +import 'package:game_tracker/presentation/views/main_menu/custom_navigation_bardb/database.dart'; import 'package:provider/provider.dart'; void main() { @@ -10,7 +10,7 @@ void main() { create: (context) => AppDatabase(), child: const MyApp(), dispose: (context, db) => db.close(), - ), + ), ); }