diff --git a/server/src/repositories/person.repository.ts b/server/src/repositories/person.repository.ts index 725304938c..cff4d8909e 100644 --- a/server/src/repositories/person.repository.ts +++ b/server/src/repositories/person.repository.ts @@ -358,7 +358,7 @@ export class PersonRepository { } @GenerateSql({ params: [DummyValue.UUID] }) - getNumberOfPeople(userId: string) { + getNumberOfPeople(userId: string, options?: PersonSearchOptions) { const zero = sql.lit(0); return this.db .selectFrom('person') @@ -368,6 +368,12 @@ export class PersonRepository { .selectFrom('asset_face') .whereRef('asset_face.personId', '=', 'person.id') .where('asset_face.deletedAt', 'is', null) + .having((eb) => + eb.or([ + eb('person.name', '!=', ''), + eb((innerEb) => innerEb.fn.count('asset_face.assetId'), '>=', options?.minimumFaceCount || 1), + ]), + ) .where((eb) => eb.exists((eb) => eb diff --git a/server/src/services/person.service.ts b/server/src/services/person.service.ts index 6fa9b3fdd2..87278b8291 100644 --- a/server/src/services/person.service.ts +++ b/server/src/services/person.service.ts @@ -67,7 +67,10 @@ export class PersonService extends BaseService { withHidden, closestFaceAssetId, }); - const { total, hidden } = await this.personRepository.getNumberOfPeople(auth.user.id); + const { total, hidden } = await this.personRepository.getNumberOfPeople(auth.user.id, { + minimumFaceCount: machineLearning.facialRecognition.minFaces, + withHidden, + }); return { people: items.map((person) => mapPerson(person)),