From 3a7124386b73eb3af814b940ef2ac33d74f4dcae Mon Sep 17 00:00:00 2001 From: MrWaradana Date: Fri, 6 Mar 2026 15:58:55 +0700 Subject: [PATCH] refactor: Centralize `search` and `items_per_page` query parameters into `CommonParams` and remove redundant definitions from specific schema query classes. --- src/acquisition_cost/schema.py | 11 +------- src/equipment/schema.py | 12 +------- src/manpower_cost/schema.py | 12 +------- src/masterdata/schema.py | 28 ++----------------- src/masterdata_simulations/schema.py | 11 -------- src/models.py | 1 + src/plant_transaction_data/schema.py | 12 +------- .../schema.py | 11 -------- src/uploaded_file/schema.py | 12 +------- src/yeardata/schema.py | 12 +------- 10 files changed, 10 insertions(+), 112 deletions(-) diff --git a/src/acquisition_cost/schema.py b/src/acquisition_cost/schema.py index 23dbdd8..c455e26 100644 --- a/src/acquisition_cost/schema.py +++ b/src/acquisition_cost/schema.py @@ -34,13 +34,4 @@ class AcquisitionCostDataPagination(Pagination): class ListQueryParams(CommonParams): - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Number of items per page" - ) - search: Optional[str] = Field( - default=None, - description="Search keyword" - ) \ No newline at end of file + pass \ No newline at end of file diff --git a/src/equipment/schema.py b/src/equipment/schema.py index 5df5fab..0d6b449 100644 --- a/src/equipment/schema.py +++ b/src/equipment/schema.py @@ -170,15 +170,5 @@ class CountRemainingLifeResponse(DefaultBase): critical: int class ListQueryParams(CommonParams): - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Number of items per page", - alias="itemsPerPage" - ) - search: Optional[str] = Field( - default=None, - description="Search keyword" - ) + pass diff --git a/src/manpower_cost/schema.py b/src/manpower_cost/schema.py index 99ca8c3..cf420a5 100644 --- a/src/manpower_cost/schema.py +++ b/src/manpower_cost/schema.py @@ -34,14 +34,4 @@ class ManpowerCostPagination(Pagination): class QueryParams(CommonParams): - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Number of items per page", - alias="itemsPerPage", - ) - search: Optional[str] = Field( - default=None, - description="Search keyword", - ) + pass diff --git a/src/masterdata/schema.py b/src/masterdata/schema.py index 3c77dba..43dea94 100644 --- a/src/masterdata/schema.py +++ b/src/masterdata/schema.py @@ -3,7 +3,7 @@ from typing import List, Optional from uuid import UUID from pydantic import BaseModel, Field, model_validator -from src.models import DefaultBase, Pagination +from src.models import CommonParams, DefaultBase, Pagination from src.auth.service import CurrentUser @@ -52,27 +52,5 @@ class MasterDataPagination(Pagination): items: List[MasterDataRead] = [] -class QueryParams(DefaultBase): - items_per_page: int = Field( - 5, - ge=1, - alias="items_per_page", - description="Items per page" - ) - itemsPerPage: Optional[int] = Field( - None, - ge=1, - description="Alias for items_per_page" - ) - search: Optional[str] = Field( - None, - description="Search keyword" - ) - - @model_validator(mode="before") - @classmethod - def resolve_aliases(cls, data: any) -> any: - if isinstance(data, dict): - if "itemsPerPage" in data and data["itemsPerPage"] is not None: - data.setdefault("items_per_page", data["itemsPerPage"]) - return data +class QueryParams(CommonParams): + pass diff --git a/src/masterdata_simulations/schema.py b/src/masterdata_simulations/schema.py index 8c0f048..561b7f2 100644 --- a/src/masterdata_simulations/schema.py +++ b/src/masterdata_simulations/schema.py @@ -45,14 +45,3 @@ class QueryParams(CommonParams): ..., description="Simulation identifier", ) - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Items per page", - alias="itemsPerPage", - ) - search: Optional[str] = Field( - default=None, - description="Search keyword", - ) diff --git a/src/models.py b/src/models.py index b03adf8..00135bd 100644 --- a/src/models.py +++ b/src/models.py @@ -106,6 +106,7 @@ class CommonParams(DefaultBase): items_per_page: int = Field(5, gt=-2, lt=2147483647, alias="items_per_page") itemsPerPage: Optional[int] = Field(None, description="Alias for items_per_page") query_str: Optional[str] = Field(None, alias="q") + search: Optional[str] = Field(None, description="Search keyword") filter_spec: Optional[str] = Field(None, alias="filter") sort_by: List[str] = Field(default_factory=list, alias="sortBy[]") descending: List[bool] = Field(default_factory=list, alias="descending[]") diff --git a/src/plant_transaction_data/schema.py b/src/plant_transaction_data/schema.py index 9813a80..b31e11c 100644 --- a/src/plant_transaction_data/schema.py +++ b/src/plant_transaction_data/schema.py @@ -120,15 +120,5 @@ class PlantTransactionDataPagination(Pagination): class ListQueryParams(CommonParams): - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Number of items per page", - alias="itemsPerPage", - ) - search: Optional[str] = Field( - default=None, - description="Search keyword", - ) + pass diff --git a/src/plant_transaction_data_simulations/schema.py b/src/plant_transaction_data_simulations/schema.py index 939ad68..0d8f13e 100644 --- a/src/plant_transaction_data_simulations/schema.py +++ b/src/plant_transaction_data_simulations/schema.py @@ -147,15 +147,4 @@ class ListQueryParams(CommonParams): ..., description="Simulation identifier", ) - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Number of items per page", - alias="itemsPerPage", - ) - search: Optional[str] = Field( - default=None, - description="Search keyword", - ) diff --git a/src/uploaded_file/schema.py b/src/uploaded_file/schema.py index 1750ea7..ba32598 100644 --- a/src/uploaded_file/schema.py +++ b/src/uploaded_file/schema.py @@ -31,14 +31,4 @@ class UploadedFileDataPagination(Pagination): class ListQueryParams(CommonParams): - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Number of items per page", - alias="itemsPerPage", - ) - search: Optional[str] = Field( - default=None, - description="Search keyword", - ) + pass diff --git a/src/yeardata/schema.py b/src/yeardata/schema.py index 778888d..cf2abc8 100644 --- a/src/yeardata/schema.py +++ b/src/yeardata/schema.py @@ -64,15 +64,5 @@ class YeardataPagination(Pagination): class ListQueryParams(CommonParams): - items_per_page: Optional[int] = Field( - default=5, - ge=1, - le=1000, - description="Number of items per page", - alias="itemsPerPage", - ) - search: Optional[str] = Field( - default=None, - description="Search keyword", - ) + pass