72 lines
2.1 KiB
Dart
72 lines
2.1 KiB
Dart
import 'package:drift/drift.dart';
|
|
import 'package:drift_flutter/drift_flutter.dart';
|
|
|
|
import 'tables.dart';
|
|
|
|
part 'app_database.g.dart';
|
|
|
|
@DriftDatabase(tables: <Type>[UserProfileRows, SyncOutboxRows])
|
|
class AppDatabase extends _$AppDatabase {
|
|
AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection());
|
|
|
|
@override
|
|
int get schemaVersion => 1;
|
|
|
|
static QueryExecutor _openConnection() {
|
|
return driftDatabase(name: 'cyberhybridhub');
|
|
}
|
|
|
|
Stream<UserProfileRow?> watchProfile(String firebaseUid) {
|
|
return (select(userProfileRows)
|
|
..where((UserProfileRows t) => t.firebaseUid.equals(firebaseUid)))
|
|
.watchSingleOrNull();
|
|
}
|
|
|
|
Future<UserProfileRow?> getProfile(String firebaseUid) {
|
|
return (select(userProfileRows)
|
|
..where((UserProfileRows t) => t.firebaseUid.equals(firebaseUid)))
|
|
.getSingleOrNull();
|
|
}
|
|
|
|
Future<void> upsertProfile(UserProfileRowsCompanion row) {
|
|
return into(userProfileRows).insertOnConflictUpdate(row);
|
|
}
|
|
|
|
Future<void> deleteProfile(String firebaseUid) {
|
|
return (delete(userProfileRows)
|
|
..where((UserProfileRows t) => t.firebaseUid.equals(firebaseUid)))
|
|
.go();
|
|
}
|
|
|
|
Future<void> clearAllProfiles() {
|
|
return delete(userProfileRows).go();
|
|
}
|
|
|
|
Future<List<SyncOutboxRow>> pendingOutbox(String firebaseUid) {
|
|
return (select(syncOutboxRows)
|
|
..where((SyncOutboxRows t) => t.firebaseUid.equals(firebaseUid))
|
|
..orderBy(<OrderClauseGenerator<SyncOutboxRows>>[
|
|
(SyncOutboxRows t) => OrderingTerm(expression: t.createdAt),
|
|
]))
|
|
.get();
|
|
}
|
|
|
|
Future<int> enqueueOutbox(SyncOutboxRowsCompanion row) {
|
|
return into(syncOutboxRows).insert(row);
|
|
}
|
|
|
|
Future<void> deleteOutboxEntry(int id) {
|
|
return (delete(syncOutboxRows)
|
|
..where((SyncOutboxRows t) => t.id.equals(id)))
|
|
.go();
|
|
}
|
|
|
|
Future<void> clearOutbox(String firebaseUid) {
|
|
return (delete(syncOutboxRows)
|
|
..where((SyncOutboxRows t) => t.firebaseUid.equals(firebaseUid)))
|
|
.go();
|
|
}
|
|
|
|
Future<void> clearAllOutbox() => delete(syncOutboxRows).go();
|
|
}
|