Browse Source

fix(server): sort un-named faces in query (#3662)

shalong-tanwen 1 year ago
parent
commit
b1b215f083

+ 1 - 3
server/src/domain/person/person.service.ts

@@ -27,10 +27,8 @@ export class PersonService {
 
   async getAll(authUser: AuthUserDto, dto: PersonSearchDto): Promise<PeopleResponseDto> {
     const people = await this.repository.getAll(authUser.id, { minimumFaceCount: 1 });
-    const named = people.filter((person) => !!person.name);
-    const unnamed = people.filter((person) => !person.name);
 
-    const persons: PersonResponseDto[] = [...named, ...unnamed]
+    const persons: PersonResponseDto[] = people
       // with thumbnails
       .filter((person) => !!person.thumbnailPath)
       .map((person) => mapPerson(person));

+ 1 - 0
server/src/infra/repositories/person.repository.ts

@@ -56,6 +56,7 @@ export class PersonRepository implements IPersonRepository {
       .leftJoin('person.faces', 'face')
       .where('person.ownerId = :userId', { userId })
       .orderBy('COUNT(face.assetId)', 'DESC')
+      .addOrderBy("NULLIF(person.name, '')", 'ASC', 'NULLS LAST')
       .having('COUNT(face.assetId) >= :faces', { faces: options?.minimumFaceCount || 1 })
       .groupBy('person.id')
       .limit(500)