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, ), ); } }