63 lines
1.8 KiB
Dart
63 lines
1.8 KiB
Dart
import 'package:drift/drift.dart';
|
|
import 'package:drift_flutter/drift_flutter.dart';
|
|
import 'package:path_provider/path_provider.dart';
|
|
import 'package:surface/database/account.dart';
|
|
import 'package:surface/database/attachment.dart';
|
|
import 'package:surface/database/chat.dart';
|
|
import 'package:surface/database/database.steps.dart';
|
|
import 'package:surface/database/keypair.dart';
|
|
import 'package:surface/database/realm.dart';
|
|
import 'package:surface/database/sticker.dart';
|
|
import 'package:surface/types/chat.dart';
|
|
import 'package:surface/types/attachment.dart';
|
|
import 'package:surface/types/account.dart';
|
|
import 'package:surface/types/realm.dart';
|
|
|
|
part 'database.g.dart';
|
|
|
|
@DriftDatabase(tables: [
|
|
SnLocalChatChannel,
|
|
SnLocalChatMessage,
|
|
SnLocalChannelMember,
|
|
SnLocalKeyPair,
|
|
SnLocalAccount,
|
|
SnLocalAttachment,
|
|
SnLocalSticker,
|
|
SnLocalStickerPack,
|
|
SnLocalRealm,
|
|
])
|
|
class AppDatabase extends _$AppDatabase {
|
|
AppDatabase([QueryExecutor? e]) : super(e ?? _openConnection());
|
|
|
|
@override
|
|
int get schemaVersion => 4;
|
|
|
|
static QueryExecutor _openConnection() {
|
|
return driftDatabase(
|
|
name: 'solar_network_data',
|
|
native: const DriftNativeOptions(
|
|
databaseDirectory: getApplicationSupportDirectory,
|
|
),
|
|
web: DriftWebOptions(
|
|
sqlite3Wasm: Uri.parse('sqlite3.wasm'),
|
|
driftWorker: Uri.parse('drift_worker.dart.js'),
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
MigrationStrategy get migration {
|
|
return MigrationStrategy(
|
|
onUpgrade: stepByStep(from1To2: (m, schema) async {
|
|
// Nothing else to do here
|
|
}, from2To3: (m, schema) async {
|
|
// Nothing else to do here, too
|
|
}, from3To4: (m, schema) async {
|
|
m.createTable(schema.snLocalRealm);
|
|
m.createIndex(schema.idxRealmAccount);
|
|
m.createIndex(schema.idxRealmAlias);
|
|
}),
|
|
);
|
|
}
|
|
}
|