diff --git a/lib/data/database.dart b/lib/data/database.dart new file mode 100644 index 0000000..2c04942 --- /dev/null +++ b/lib/data/database.dart @@ -0,0 +1,46 @@ +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