From f970c1928d9b4557ea7005891fc30b6bf58daccd Mon Sep 17 00:00:00 2001 From: Matthieu Date: Wed, 11 Feb 2026 11:11:09 +0100 Subject: [PATCH] fix(api) : cap pagination to 200 items/page to prevent OOM in production Co-Authored-By: Claude Opus 4.6 --- Inventory_frontend | 2 +- config/packages/api_platform.yaml | 2 ++ src/Entity/Composant.php | 2 +- src/Entity/Constructeur.php | 2 +- src/Entity/ModelType.php | 2 +- src/Entity/Piece.php | 2 +- src/Entity/Product.php | 2 +- src/Entity/Site.php | 2 +- src/Entity/TypeMachine.php | 2 +- 9 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Inventory_frontend b/Inventory_frontend index 79d2df8..8fecf67 160000 --- a/Inventory_frontend +++ b/Inventory_frontend @@ -1 +1 @@ -Subproject commit 79d2df8bc6976027371798beb6b586be4a7c4191 +Subproject commit 8fecf67a7fcbd5087d30943ce1d22099256875c1 diff --git a/config/packages/api_platform.yaml b/config/packages/api_platform.yaml index dddcf22..5a9efd2 100644 --- a/config/packages/api_platform.yaml +++ b/config/packages/api_platform.yaml @@ -5,3 +5,5 @@ api_platform: stateless: false cache_headers: vary: ['Content-Type', 'Authorization', 'Origin'] + pagination_items_per_page: 30 + pagination_maximum_items_per_page: 200 diff --git a/src/Entity/Composant.php b/src/Entity/Composant.php index 807f73d..a069255 100644 --- a/src/Entity/Composant.php +++ b/src/Entity/Composant.php @@ -24,7 +24,7 @@ use Symfony\Component\Serializer\Attribute\Groups; #[ApiResource( normalizationContext: ['groups' => ['composant:read']], paginationClientItemsPerPage: true, - paginationMaximumItemsPerPage: 500 + paginationMaximumItemsPerPage: 200 )] class Composant { diff --git a/src/Entity/Constructeur.php b/src/Entity/Constructeur.php index 84beceb..d3cf224 100644 --- a/src/Entity/Constructeur.php +++ b/src/Entity/Constructeur.php @@ -17,7 +17,7 @@ use Doctrine\ORM\Mapping as ORM; #[ORM\HasLifecycleCallbacks] #[ApiResource( paginationClientItemsPerPage: true, - paginationMaximumItemsPerPage: 500 + paginationMaximumItemsPerPage: 200 )] class Constructeur { diff --git a/src/Entity/ModelType.php b/src/Entity/ModelType.php index 719a5d9..b84b4c7 100644 --- a/src/Entity/ModelType.php +++ b/src/Entity/ModelType.php @@ -23,7 +23,7 @@ use Symfony\Component\Serializer\Annotation\Groups; #[ApiFilter(SearchFilter::class, properties: ['category' => 'exact', 'name' => 'ipartial'])] #[ApiResource( paginationClientItemsPerPage: true, - paginationMaximumItemsPerPage: 500 + paginationMaximumItemsPerPage: 200 )] class ModelType { diff --git a/src/Entity/Piece.php b/src/Entity/Piece.php index 01ef908..dc2a29a 100644 --- a/src/Entity/Piece.php +++ b/src/Entity/Piece.php @@ -24,7 +24,7 @@ use Symfony\Component\Serializer\Attribute\Groups; #[ApiResource( normalizationContext: ['groups' => ['piece:read']], paginationClientItemsPerPage: true, - paginationMaximumItemsPerPage: 500 + paginationMaximumItemsPerPage: 200 )] class Piece { diff --git a/src/Entity/Product.php b/src/Entity/Product.php index 4ec00fc..abb9100 100644 --- a/src/Entity/Product.php +++ b/src/Entity/Product.php @@ -24,7 +24,7 @@ use Symfony\Component\Serializer\Attribute\Groups; #[ApiResource( normalizationContext: ['groups' => ['product:read']], paginationClientItemsPerPage: true, - paginationMaximumItemsPerPage: 500 + paginationMaximumItemsPerPage: 200 )] class Product { diff --git a/src/Entity/Site.php b/src/Entity/Site.php index bfc0b6c..c01af47 100644 --- a/src/Entity/Site.php +++ b/src/Entity/Site.php @@ -30,7 +30,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(), ], paginationClientItemsPerPage: true, - paginationMaximumItemsPerPage: 500 + paginationMaximumItemsPerPage: 200 )] class Site { diff --git a/src/Entity/TypeMachine.php b/src/Entity/TypeMachine.php index e6ee521..30ee9ae 100644 --- a/src/Entity/TypeMachine.php +++ b/src/Entity/TypeMachine.php @@ -34,7 +34,7 @@ use Symfony\Component\Validator\Constraints as Assert; new Delete(), ], paginationClientItemsPerPage: true, - paginationMaximumItemsPerPage: 500 + paginationMaximumItemsPerPage: 200 )] class TypeMachine {