From f040c9fb38bb0e2327313fbc8f763b7280c2f466 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 6 Aug 2024 11:22:13 -0500 Subject: [PATCH] chore(server): remove get person asset limit (#11597) * chore(server): remover get person asset limit * sql * remove getPersonAsset endpoint * remove getPersonAsset endpoint * use search endpoint to get people * fix: server test * mobile linter * fix: server test * remove debuglog * deprecated endpoint * change page size on mobile * revert max size * fix test --- .../lib/providers/search/people.provider.dart | 3 -- mobile/lib/services/person.service.dart | 36 +++++++++++++++--- mobile/openapi/README.md | Bin 31243 -> 31355 bytes mobile/openapi/lib/api/deprecated_api.dart | Bin 13614 -> 15349 bytes mobile/openapi/lib/api/people_api.dart | Bin 17821 -> 17899 bytes open-api/immich-openapi-specs.json | 10 ++++- open-api/typescript-sdk/src/fetch-client.ts | 3 ++ server/src/controllers/person.controller.ts | 2 + 8 files changed, 44 insertions(+), 10 deletions(-) diff --git a/mobile/lib/providers/search/people.provider.dart b/mobile/lib/providers/search/people.provider.dart index 753b9f19b..e2c243354 100644 --- a/mobile/lib/providers/search/people.provider.dart +++ b/mobile/lib/providers/search/people.provider.dart @@ -22,9 +22,6 @@ Future> getAllPeople( Future personAssets(PersonAssetsRef ref, String personId) async { final PersonService personService = ref.read(personServiceProvider); final assets = await personService.getPersonAssets(personId); - if (assets == null) { - return RenderList.empty(); - } final settings = ref.read(appSettingsServiceProvider); final groupBy = diff --git a/mobile/lib/services/person.service.dart b/mobile/lib/services/person.service.dart index f35ae1a22..ddb61f5e4 100644 --- a/mobile/lib/services/person.service.dart +++ b/mobile/lib/services/person.service.dart @@ -30,15 +30,41 @@ class PersonService { } } - Future?> getPersonAssets(String id) async { + Future> getPersonAssets(String id) async { + List result = []; + var hasNext = true; + var currentPage = 1; + try { - final assets = await _apiService.peopleApi.getPersonAssets(id); - if (assets == null) return null; - return await _db.assets.getAllByRemoteId(assets.map((e) => e.id)); + while (hasNext) { + final response = await _apiService.searchApi.searchMetadata( + MetadataSearchDto( + personIds: [id], + page: currentPage, + size: 1000, + ), + ); + + if (response == null) { + break; + } + + if (response.assets.nextPage == null) { + hasNext = false; + } + + final assets = response.assets.items; + final mapAssets = + await _db.assets.getAllByRemoteId(assets.map((e) => e.id)); + result.addAll(mapAssets); + + currentPage++; + } } catch (error, stack) { _log.severe("Error while fetching person assets", error, stack); } - return null; + + return result; } Future updateName(String id, String name) async { diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index 52e2e3cb40624fe1bb6e6673e88f7b312e3ddb6a..89a4fb8e3b06265de87567cd56cea359fb0d0ce1 100644 GIT binary patch delta 30 mcmeDF!ub0Ow^ZlW$9jOpehrn0!T2d~=A@_ILoysSHy9 delta 14 WcmezUg|Yh!I diff --git a/mobile/openapi/lib/api/deprecated_api.dart b/mobile/openapi/lib/api/deprecated_api.dart index 18518cca6957ec166939d4521e95306a1f2bf977..e1e09ae4b2dda9a5a92926d41bdf285540dc96fe 100644 GIT binary patch delta 550 zcmbu5y-EW?6orXRAeBaKB*jf3J1a432sZhTh$vVDEi6QE%-+Napc*JiOHj0Vv9WWn=!v26M^xf#{Y+wcoD_5ukDKyrgi>752q-bi5M&B^=cy3H^Av%&Q zRjf$P1*%7)4dYbU+pZP@lmSO?%>0Q*7k`e`jw-J(;IxfR&WRK4ot*u5XIuMkiD{vj zKljc16hOj+mz}QO<-l2Q%Zc)XXy?WnHmNpUM?h9CjEr7LSIHrL;8=nV{`Y9TU- NdboF-p4}(shhJFhurB}r delta 20 ccmexbzAkG+H~ZuQ7WT<^8T~h};Pcf50A&XVcmMzZ diff --git a/mobile/openapi/lib/api/people_api.dart b/mobile/openapi/lib/api/people_api.dart index 9fe62f084156104eff16503bcbe6a9695e9e2bdd..95c4a2fd45cf41d210dc51dc1acc0ae2c17f3340 100644 GIT binary patch delta 176 zcmbQ+&G@>Taf72+W=KY6u|h#nenDzcNu@%0VzEL>YC%zIa$-qpib7_dLYbkSp`o#! z0hfY;zP>($RPf6$Nwrb{Yt2n9$;eMpC`v6UEy^oaD9K1w@CXSBP>2pnEiTB this.service.getThumbnail(auth, id), this.logger); } + @EndpointLifecycle({ deprecatedAt: 'v1.113.0' }) @Get(':id/assets') @Authenticated() getPersonAssets(@Auth() auth: AuthDto, @Param() { id }: UUIDParamDto): Promise {