32 lines
646 B
Python
32 lines
646 B
Python
from typing import Literal, List, Union, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from app.models import PosType
|
|
from app.schemas.admin_schemas import PosEnumFr
|
|
|
|
|
|
class SearchRequest(BaseModel):
|
|
query: str
|
|
language: Literal['fr', 'jp']
|
|
sort: Literal['relevance', 'date'] = 'date'
|
|
order: Literal['asc', 'des'] = 'des'
|
|
|
|
|
|
class SearchItemJp(BaseModel):
|
|
chi_exp: str
|
|
example: str
|
|
|
|
|
|
class SearchItemFr(BaseModel):
|
|
pos: PosEnumFr
|
|
chi_exp: str
|
|
eng_explanation: str
|
|
example: Optional[str]
|
|
|
|
|
|
class SearchResponse(BaseModel):
|
|
query: str
|
|
pos: list
|
|
contents: Union[List[SearchItemFr], List[SearchItemJp]]
|