mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-01-22 16:56:19 +01:00
Drop db if failed migrating
This commit is contained in:
parent
ea07b5d2e8
commit
781d846806
3 changed files with 48 additions and 28 deletions
|
@ -45,6 +45,14 @@ class AppDb {
|
|||
});
|
||||
}
|
||||
|
||||
Future<void> delete() async {
|
||||
_log.warning("[delete] Deleting database");
|
||||
return await _lock.synchronized(() async {
|
||||
final dbFactory = platform.getDbFactory();
|
||||
await dbFactory.deleteDatabase(dbName);
|
||||
});
|
||||
}
|
||||
|
||||
/// Open the database
|
||||
Future<Database> _open() {
|
||||
if (platform_k.isWeb) {
|
||||
|
|
|
@ -27,6 +27,7 @@ class DbCompatV5 {
|
|||
|
||||
static Future<void> migrate(AppDb appDb) async {
|
||||
_log.info("[migrate] Migrate AppDb");
|
||||
try {
|
||||
await appDb.use((db) async {
|
||||
final transaction = db.transaction(
|
||||
[AppDb.file2StoreName, AppDb.metaStoreName], idbModeReadWrite);
|
||||
|
@ -57,6 +58,12 @@ class DbCompatV5 {
|
|||
rethrow;
|
||||
}
|
||||
});
|
||||
} catch (e, stackTrace) {
|
||||
_log.shout(
|
||||
"[migrate] Failed while migrating, drop db instead", e, stackTrace);
|
||||
await appDb.delete();
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
static final _log = Logger("use_case.db_compat.v5.DbCompatV5");
|
||||
|
|
|
@ -117,6 +117,11 @@ class MockAppDb implements AppDb {
|
|||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> delete() async {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
static void _createDb(
|
||||
Database db, {
|
||||
bool hasAlbumStore = true,
|
||||
|
|
Loading…
Reference in a new issue