поиск персоны использует startswith
This commit is contained in:
@@ -99,3 +99,17 @@ class PersonDetail(Person):
|
|||||||
|
|
||||||
class PersonSearchIn(BaseModel):
|
class PersonSearchIn(BaseModel):
|
||||||
full_name: str
|
full_name: str
|
||||||
|
|
||||||
|
class PersonSearchOut(BaseModel):
|
||||||
|
id: UUID4
|
||||||
|
first_name: str
|
||||||
|
last_name: str
|
||||||
|
patronymic: Optional[str]
|
||||||
|
birth_date: Optional[date]
|
||||||
|
medical_card_id: str | None
|
||||||
|
contacts: Optional[List[Contact]] = []
|
||||||
|
addresses: Optional[List[Address]] = []
|
||||||
|
documents: Optional[List[Document]] = []
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
@@ -8,7 +8,8 @@ from personal_info.db.schemas import (
|
|||||||
Person,
|
Person,
|
||||||
PersonDetail,
|
PersonDetail,
|
||||||
PersonCreate,
|
PersonCreate,
|
||||||
PersonSearchIn
|
PersonSearchIn,
|
||||||
|
PersonSearchOut
|
||||||
)
|
)
|
||||||
from personal_info.services import PersonService, get_persons_service
|
from personal_info.services import PersonService, get_persons_service
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ async def batch_list_persons(
|
|||||||
) -> List[models.Person]:
|
) -> List[models.Person]:
|
||||||
return persons_service.batch_get(request)
|
return persons_service.batch_get(request)
|
||||||
|
|
||||||
@router.post('/search', response_model=List[Person])
|
@router.post('/search', response_model=List[PersonSearchOut])
|
||||||
async def search_person(
|
async def search_person(
|
||||||
query_params: PersonSearchIn,
|
query_params: PersonSearchIn,
|
||||||
persons_service: PersonService = Depends(get_persons_service)
|
persons_service: PersonService = Depends(get_persons_service)
|
||||||
|
|||||||
@@ -55,5 +55,5 @@ class PersonService(BaseService[Person, PersonCreate, Any]):
|
|||||||
full_name = str(query_params.full_name).lower()
|
full_name = str(query_params.full_name).lower()
|
||||||
if full_name == '':
|
if full_name == '':
|
||||||
return []
|
return []
|
||||||
objs: List[Person] = self.db_session.query(Person).filter(Person.full_name.contains(full_name)).all()
|
objs: List[Person] = self.db_session.query(Person).filter(Person.full_name.istartswith(full_name)).all()
|
||||||
return objs
|
return objs
|
||||||
Reference in New Issue
Block a user