mirror of
https://github.com/immich-app/immich
synced 2026-08-22 13:13:05 +00:00
refactor watch queries
This commit is contained in:
parent
fa44f1ea56
commit
66497fd8e5
1 changed files with 15 additions and 7 deletions
|
|
@ -22,18 +22,26 @@ class AuthUserRepository extends DatabaseAccessor<Drift> with $AuthUserRepositor
|
|||
|
||||
Drift get _db => attachedDatabase;
|
||||
|
||||
Selectable<UserDto?> get _authUserQuery => (_db.authUserEntity.select()..limit(1)).asyncMap(_toDto);
|
||||
Selectable<UserDto?> get _authUserQuery {
|
||||
final query = _db.select(_db.authUserEntity).join([
|
||||
leftOuterJoin(
|
||||
_db.userMetadataEntity,
|
||||
_db.userMetadataEntity.userId.equalsExp(_db.authUserEntity.id) &
|
||||
_db.userMetadataEntity.key.equalsValue(.preferences),
|
||||
),
|
||||
])..limit(1);
|
||||
|
||||
return query.map((row) {
|
||||
final user = row.readTable(_db.authUserEntity);
|
||||
final preferences = row.readTableOrNull(_db.userMetadataEntity);
|
||||
return user.toDto(preferences != null ? [preferences.toDto()] : null);
|
||||
});
|
||||
}
|
||||
|
||||
Future<UserDto?> get() => _authUserQuery.getSingleOrNull();
|
||||
|
||||
Stream<UserDto?> watch() => _authUserQuery.watchSingleOrNull();
|
||||
|
||||
Future<UserDto> _toDto(AuthUserEntityData user) async {
|
||||
final query = _db.userMetadataEntity.select()..where((e) => e.userId.equals(user.id));
|
||||
final metadata = await query.map((row) => row.toDto()).get();
|
||||
return user.toDto(metadata);
|
||||
}
|
||||
|
||||
Future<UserDto> upsert(UserDto user) async {
|
||||
await _db.authUserEntity.insertOnConflictUpdate(
|
||||
AuthUserEntityCompanion(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue