You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
884 B
Python
22 lines
884 B
Python
from typing import List, Optional
|
|
|
|
from pydantic import Field
|
|
from src.models import DefultBase
|
|
|
|
|
|
class CommonParams(DefultBase):
|
|
# This ensures no extra query params are allowed
|
|
current_user: Optional[str] = Field(None, alias="currentUser")
|
|
page: int = Field(1, gt=0, lt=2147483647)
|
|
items_per_page: int = Field(5, gt=-2, lt=2147483647)
|
|
query_str: Optional[str] = Field(None, alias="q")
|
|
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[]")
|
|
exclude: List[str] = Field(default_factory=list, alias="exclude[]")
|
|
all_params: int = Field(0, alias="all")
|
|
|
|
# Property to mirror your original return dict's bool conversion
|
|
@property
|
|
def is_all(self) -> bool:
|
|
return bool(self.all_params) |