Compare commits

..

1 Commits

Author SHA1 Message Date
Yaros
421844de03 fix(mobile): inconsistent query for people 2025-12-07 16:02:46 +01:00
2 changed files with 20 additions and 3 deletions

View File

@@ -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<List<DriftPerson>> 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),

View File

@@ -231,7 +231,7 @@
let people = $derived(data.people.people);
let visiblePeople = $derived(people.filter((people) => !people.isHidden));
let countVisiblePeople = $derived(searchName ? searchedPeopleLocal.length : visiblePeople.length);
let countVisiblePeople = $derived(searchName ? searchedPeopleLocal.length : data.people.total - data.people.hidden);
let showPeople = $derived(searchName ? searchedPeopleLocal : visiblePeople);
const onNameChangeInputFocus = (person: PersonResponseDto) => {