42 lines
1.5 KiB
Dart
42 lines
1.5 KiB
Dart
import 'package:drift/drift.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
import 'package:timetrack/core/database/connection/connection_stub.dart'
|
|
if (dart.library.io) 'package:timetrack/core/database/connection/connection_native.dart'
|
|
if (dart.library.html) 'package:timetrack/core/database/connection/connection_web.dart';
|
|
import 'package:timetrack/core/database/tables/projects_table.dart';
|
|
import 'package:timetrack/core/database/tables/time_entries_table.dart';
|
|
import 'package:timetrack/core/database/tables/tags_table.dart';
|
|
import 'package:timetrack/core/database/tables/time_entry_tags_table.dart';
|
|
import 'package:timetrack/core/database/daos/projects_dao.dart';
|
|
import 'package:timetrack/core/database/daos/time_entries_dao.dart';
|
|
import 'package:timetrack/core/database/daos/tags_dao.dart';
|
|
|
|
part 'app_database.g.dart';
|
|
|
|
@DriftDatabase(
|
|
tables: [Projects, TimeEntries, Tags, TimeEntryTags],
|
|
daos: [ProjectsDao, TimeEntriesDao, TagsDao],
|
|
)
|
|
class AppDatabase extends _$AppDatabase {
|
|
AppDatabase([QueryExecutor? executor])
|
|
: super(executor ?? openDatabaseConnection());
|
|
|
|
@override
|
|
int get schemaVersion => 1;
|
|
|
|
@override
|
|
MigrationStrategy get migration => MigrationStrategy(
|
|
onCreate: (m) => m.createAll(),
|
|
onUpgrade: (m, from, to) async {
|
|
// Future migrations go here
|
|
},
|
|
);
|
|
}
|
|
|
|
@Riverpod(keepAlive: true)
|
|
AppDatabase appDatabase(AppDatabaseRef ref) {
|
|
final db = AppDatabase();
|
|
ref.onDispose(db.close);
|
|
return db;
|
|
}
|