2023-03-23 02:36:44 +01:00
|
|
|
import 'dart:async';
|
|
|
|
|
2025-02-20 00:57:32 +05:30
|
|
|
import 'package:immich_mobile/domain/models/store.model.dart';
|
2025-02-18 13:10:55 -06:00
|
|
|
import 'package:immich_mobile/entities/album.entity.dart';
|
|
|
|
import 'package:immich_mobile/entities/asset.entity.dart';
|
|
|
|
import 'package:immich_mobile/entities/etag.entity.dart';
|
2024-04-30 21:36:40 -05:00
|
|
|
import 'package:immich_mobile/entities/store.entity.dart';
|
2025-03-06 23:28:24 +05:30
|
|
|
import 'package:immich_mobile/infrastructure/entities/exif.entity.dart';
|
2025-03-12 19:26:56 +05:30
|
|
|
import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
|
2023-03-18 15:55:11 +01:00
|
|
|
import 'package:isar/isar.dart';
|
2023-02-09 18:32:08 +01:00
|
|
|
|
2024-12-16 10:11:48 -06:00
|
|
|
const int targetVersion = 8;
|
2024-05-14 17:35:37 +02:00
|
|
|
|
2023-03-27 04:35:52 +02:00
|
|
|
Future<void> migrateDatabaseIfNeeded(Isar db) async {
|
|
|
|
final int version = Store.get(StoreKey.version, 1);
|
2024-05-14 17:35:37 +02:00
|
|
|
if (version < targetVersion) {
|
|
|
|
_migrateTo(db, targetVersion);
|
2023-03-27 04:35:52 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-10 20:13:59 +02:00
|
|
|
Future<void> _migrateTo(Isar db, int version) async {
|
2025-02-18 13:10:55 -06:00
|
|
|
await Store.delete(StoreKey.assetETag);
|
|
|
|
await db.writeTxn(() async {
|
|
|
|
await db.assets.clear();
|
|
|
|
await db.exifInfos.clear();
|
|
|
|
await db.albums.clear();
|
|
|
|
await db.eTags.clear();
|
|
|
|
await db.users.clear();
|
|
|
|
});
|
2023-06-10 20:13:59 +02:00
|
|
|
await Store.put(StoreKey.version, version);
|
2023-03-27 04:35:52 +02:00
|
|
|
}
|