поиск персоны использует startswith

This commit is contained in:
dderbentsov
2023-10-04 22:07:05 +03:00
parent 936d3b0af8
commit 2f904bcd19
3 changed files with 19 additions and 4 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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