fix: drift build settings and make migration

This commit is contained in:
bwees 2025-08-04 17:27:33 -05:00
parent 33bbb8d3e2
commit 4469dd21a3
No known key found for this signature in database
7 changed files with 57 additions and 48 deletions

View File

@ -19,6 +19,7 @@ targets:
- lib/infrastructure/entities/*.dart - lib/infrastructure/entities/*.dart
- lib/infrastructure/entities/*.drift - lib/infrastructure/entities/*.drift
- lib/infrastructure/repositories/db.repository.dart - lib/infrastructure/repositories/db.repository.dart
- lib/infrastructure/repositories/logger_db.repository.dart
drift_dev:modular: drift_dev:modular:
enabled: true enabled: true
options: *drift_options options: *drift_options

View File

@ -9,7 +9,6 @@ import 'package:immich_mobile/infrastructure/entities/exif.entity.dart';
import 'package:immich_mobile/infrastructure/entities/local_album.entity.dart'; import 'package:immich_mobile/infrastructure/entities/local_album.entity.dart';
import 'package:immich_mobile/infrastructure/entities/local_album_asset.entity.dart'; import 'package:immich_mobile/infrastructure/entities/local_album_asset.entity.dart';
import 'package:immich_mobile/infrastructure/entities/local_asset.entity.dart'; import 'package:immich_mobile/infrastructure/entities/local_asset.entity.dart';
import 'package:immich_mobile/infrastructure/entities/log.entity.dart';
import 'package:immich_mobile/infrastructure/entities/memory.entity.dart'; import 'package:immich_mobile/infrastructure/entities/memory.entity.dart';
import 'package:immich_mobile/infrastructure/entities/memory_asset.entity.dart'; import 'package:immich_mobile/infrastructure/entities/memory_asset.entity.dart';
import 'package:immich_mobile/infrastructure/entities/partner.entity.dart'; import 'package:immich_mobile/infrastructure/entities/partner.entity.dart';
@ -131,24 +130,3 @@ class DriftDatabaseRepository implements IDatabaseRepository {
@override @override
Future<T> transaction<T>(Future<T> Function() callback) => _db.transaction(callback); Future<T> transaction<T>(Future<T> Function() callback) => _db.transaction(callback);
} }
@DriftDatabase(tables: [LogMessageEntity])
class DriftLogger extends $DriftLogger implements IDatabaseRepository {
DriftLogger([QueryExecutor? executor])
: super(
executor ?? driftDatabase(name: 'immich_logs', native: const DriftNativeOptions(shareAcrossIsolates: true)),
);
@override
int get schemaVersion => 1;
@override
MigrationStrategy get migration => MigrationStrategy(
beforeOpen: (details) async {
await customStatement('PRAGMA foreign_keys = ON');
await customStatement('PRAGMA synchronous = NORMAL');
await customStatement('PRAGMA journal_mode = WAL');
await customStatement('PRAGMA busy_timeout = 500');
},
);
}

View File

@ -36,8 +36,6 @@ import 'package:immich_mobile/infrastructure/entities/asset_face.entity.drift.da
import 'package:immich_mobile/infrastructure/entities/merged_asset.drift.dart' import 'package:immich_mobile/infrastructure/entities/merged_asset.drift.dart'
as i17; as i17;
import 'package:drift/internal/modular.dart' as i18; import 'package:drift/internal/modular.dart' as i18;
import 'package:immich_mobile/infrastructure/entities/log.entity.drift.dart'
as i19;
abstract class $Drift extends i0.GeneratedDatabase { abstract class $Drift extends i0.GeneratedDatabase {
$Drift(i0.QueryExecutor e) : super(e); $Drift(i0.QueryExecutor e) : super(e);
@ -313,25 +311,3 @@ class $DriftManager {
i16.$$AssetFaceEntityTableTableManager get assetFaceEntity => i16.$$AssetFaceEntityTableTableManager get assetFaceEntity =>
i16.$$AssetFaceEntityTableTableManager(_db, _db.assetFaceEntity); i16.$$AssetFaceEntityTableTableManager(_db, _db.assetFaceEntity);
} }
abstract class $DriftLogger extends i0.GeneratedDatabase {
$DriftLogger(i0.QueryExecutor e) : super(e);
$DriftLoggerManager get managers => $DriftLoggerManager(this);
late final i19.$LogMessageEntityTable logMessageEntity = i19
.$LogMessageEntityTable(this);
@override
Iterable<i0.TableInfo<i0.Table, Object?>> get allTables =>
allSchemaEntities.whereType<i0.TableInfo<i0.Table, Object?>>();
@override
List<i0.DatabaseSchemaEntity> get allSchemaEntities => [logMessageEntity];
@override
i0.DriftDatabaseOptions get options =>
const i0.DriftDatabaseOptions(storeDateTimeAsText: true);
}
class $DriftLoggerManager {
final $DriftLogger _db;
$DriftLoggerManager(this._db);
i19.$$LogMessageEntityTableTableManager get logMessageEntity =>
i19.$$LogMessageEntityTableTableManager(_db, _db.logMessageEntity);
}

View File

@ -3,7 +3,7 @@ import 'package:immich_mobile/constants/constants.dart';
import 'package:immich_mobile/domain/models/log.model.dart'; import 'package:immich_mobile/domain/models/log.model.dart';
import 'package:immich_mobile/infrastructure/entities/log.entity.dart'; import 'package:immich_mobile/infrastructure/entities/log.entity.dart';
import 'package:immich_mobile/infrastructure/entities/log.entity.drift.dart'; import 'package:immich_mobile/infrastructure/entities/log.entity.drift.dart';
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart'; import 'package:immich_mobile/infrastructure/repositories/logger_db.repository.dart';
class LogRepository { class LogRepository {
final DriftLogger _db; final DriftLogger _db;

View File

@ -0,0 +1,27 @@
import 'package:drift/drift.dart';
import 'package:drift_flutter/drift_flutter.dart';
import 'package:immich_mobile/domain/interfaces/db.interface.dart';
import 'package:immich_mobile/infrastructure/entities/log.entity.dart';
import 'logger_db.repository.drift.dart';
@DriftDatabase(tables: [LogMessageEntity])
class DriftLogger extends $DriftLogger implements IDatabaseRepository {
DriftLogger([QueryExecutor? executor])
: super(
executor ?? driftDatabase(name: 'immich_logs', native: const DriftNativeOptions(shareAcrossIsolates: true)),
);
@override
int get schemaVersion => 1;
@override
MigrationStrategy get migration => MigrationStrategy(
beforeOpen: (details) async {
await customStatement('PRAGMA foreign_keys = ON');
await customStatement('PRAGMA synchronous = NORMAL');
await customStatement('PRAGMA journal_mode = WAL');
await customStatement('PRAGMA busy_timeout = 500');
},
);
}

View File

@ -0,0 +1,27 @@
// dart format width=80
// ignore_for_file: type=lint
import 'package:drift/drift.dart' as i0;
import 'package:immich_mobile/infrastructure/entities/log.entity.drift.dart'
as i1;
abstract class $DriftLogger extends i0.GeneratedDatabase {
$DriftLogger(i0.QueryExecutor e) : super(e);
$DriftLoggerManager get managers => $DriftLoggerManager(this);
late final i1.$LogMessageEntityTable logMessageEntity = i1
.$LogMessageEntityTable(this);
@override
Iterable<i0.TableInfo<i0.Table, Object?>> get allTables =>
allSchemaEntities.whereType<i0.TableInfo<i0.Table, Object?>>();
@override
List<i0.DatabaseSchemaEntity> get allSchemaEntities => [logMessageEntity];
@override
i0.DriftDatabaseOptions get options =>
const i0.DriftDatabaseOptions(storeDateTimeAsText: true);
}
class $DriftLoggerManager {
final $DriftLogger _db;
$DriftLoggerManager(this._db);
i1.$$LogMessageEntityTableTableManager get logMessageEntity =>
i1.$$LogMessageEntityTableTableManager(_db, _db.logMessageEntity);
}

View File

@ -14,8 +14,8 @@ import 'package:immich_mobile/infrastructure/entities/device_asset.entity.dart';
import 'package:immich_mobile/infrastructure/entities/exif.entity.dart'; import 'package:immich_mobile/infrastructure/entities/exif.entity.dart';
import 'package:immich_mobile/infrastructure/entities/store.entity.dart'; import 'package:immich_mobile/infrastructure/entities/store.entity.dart';
import 'package:immich_mobile/infrastructure/entities/user.entity.dart'; import 'package:immich_mobile/infrastructure/entities/user.entity.dart';
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/log.repository.dart'; import 'package:immich_mobile/infrastructure/repositories/log.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/logger_db.repository.dart';
import 'package:immich_mobile/infrastructure/repositories/store.repository.dart'; import 'package:immich_mobile/infrastructure/repositories/store.repository.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';