поиск персоны использует startswith
This commit is contained in:
@@ -99,3 +99,17 @@ class PersonDetail(Person):
|
||||
|
||||
class PersonSearchIn(BaseModel):
|
||||
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,
|
||||
PersonDetail,
|
||||
PersonCreate,
|
||||
PersonSearchIn
|
||||
PersonSearchIn,
|
||||
PersonSearchOut
|
||||
)
|
||||
from personal_info.services import PersonService, get_persons_service
|
||||
|
||||
@@ -42,7 +43,7 @@ async def batch_list_persons(
|
||||
) -> List[models.Person]:
|
||||
return persons_service.batch_get(request)
|
||||
|
||||
@router.post('/search', response_model=List[Person])
|
||||
@router.post('/search', response_model=List[PersonSearchOut])
|
||||
async def search_person(
|
||||
query_params: PersonSearchIn,
|
||||
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()
|
||||
if full_name == '':
|
||||
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
|
||||
Reference in New Issue
Block a user