From 0ed5ad68d820a25ecbd89b3a2e286bcd23bb2285 Mon Sep 17 00:00:00 2001 From: Kyrch Date: Thu, 25 Sep 2025 02:44:24 -0300 Subject: [PATCH] feat(graphql): allow array in findAnimesByExternalSite.id (#968) --- .../Queries/Wiki/FindAnimeByExternalSiteQuery.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/GraphQL/Schema/Queries/Wiki/FindAnimeByExternalSiteQuery.php b/app/GraphQL/Schema/Queries/Wiki/FindAnimeByExternalSiteQuery.php index d043a7779..c95948795 100644 --- a/app/GraphQL/Schema/Queries/Wiki/FindAnimeByExternalSiteQuery.php +++ b/app/GraphQL/Schema/Queries/Wiki/FindAnimeByExternalSiteQuery.php @@ -52,7 +52,7 @@ class FindAnimeByExternalSiteQuery extends BaseQuery new Argument(self::ATTRIBUTE_SITE, GraphQL::type(class_basename(ResourceSite::class))) ->required(), - new Argument(self::ATTRIBUTE_ID, Type::int()), + new Argument(self::ATTRIBUTE_ID, Type::listOf(Type::nonNull(Type::int()))), new Argument(self::ATTRIBUTE_LINK, Type::string()), ]; @@ -81,11 +81,15 @@ class FindAnimeByExternalSiteQuery extends BaseQuery throw new ClientValidationException('At least "id" or "link" is required.'); } + if (count($externalId) > 100) { + throw new ClientValidationException('The "Id" parameter cannot contain more than 100 integer values.'); + } + $builder->whereRelation(Anime::RELATION_RESOURCES, function (Builder $query) use ($site, $externalId, $link) { $query->where(ExternalResource::ATTRIBUTE_SITE, $site); - if (is_int($externalId)) { - $query->where(ExternalResource::ATTRIBUTE_EXTERNAL_ID, $externalId); + if (is_array($externalId)) { + $query->whereIn(ExternalResource::ATTRIBUTE_EXTERNAL_ID, $externalId); } if (is_string($link)) {