From 421844de0353d7f73ce1b3f63259ba7b2d386e5e Mon Sep 17 00:00:00 2001 From: Yaros Date: Sun, 7 Dec 2025 16:02:46 +0100 Subject: [PATCH] fix(mobile): inconsistent query for people --- .../repositories/people.repository.dart | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/mobile/lib/infrastructure/repositories/people.repository.dart b/mobile/lib/infrastructure/repositories/people.repository.dart index e2b8646dba..d08c2d5a0b 100644 --- a/mobile/lib/infrastructure/repositories/people.repository.dart +++ b/mobile/lib/infrastructure/repositories/people.repository.dart @@ -1,6 +1,8 @@ import 'package:drift/drift.dart'; +import 'package:immich_mobile/domain/models/asset/base_asset.model.dart'; import 'package:immich_mobile/domain/models/person.model.dart'; import 'package:immich_mobile/infrastructure/entities/person.entity.drift.dart'; +import 'package:immich_mobile/infrastructure/entities/remote_asset.entity.drift.dart'; import 'package:immich_mobile/infrastructure/repositories/db.repository.dart'; class DriftPeopleRepository extends DriftDatabaseRepository { @@ -21,10 +23,25 @@ class DriftPeopleRepository extends DriftDatabaseRepository { Future> getAllPeople() async { final query = _db.select(_db.personEntity).join([ - leftOuterJoin(_db.assetFaceEntity, _db.assetFaceEntity.personId.equalsExp(_db.personEntity.id)), + innerJoin(_db.assetFaceEntity, _db.assetFaceEntity.personId.equalsExp(_db.personEntity.id)), + innerJoin( + _db.remoteAssetEntity, + _db.remoteAssetEntity.id.equalsExp(_db.assetFaceEntity.assetId) & + _db.remoteAssetEntity.visibility.equals( + $RemoteAssetEntityTable.$convertervisibility.toSql(AssetVisibility.timeline), + ) & + _db.remoteAssetEntity.deletedAt.isNull(), + ), ]) ..where(_db.personEntity.isHidden.equals(false)) - ..groupBy([_db.personEntity.id], having: _db.assetFaceEntity.id.count().isBiggerOrEqualValue(3)) + ..where(_db.remoteAssetEntity.deletedAt.isNull()) + ..groupBy( + [_db.personEntity.id], + having: Expression.or([ + _db.assetFaceEntity.id.count().isBiggerOrEqualValue(3), + _db.personEntity.name.equals('').not(), + ]), + ) ..orderBy([ OrderingTerm(expression: _db.personEntity.name.equals('').not(), mode: OrderingMode.desc), OrderingTerm(expression: _db.assetFaceEntity.id.count(), mode: OrderingMode.desc),