timetracker/lib/core/database/app_database.dart
2026-08-03 21:51:48 +02:00

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