From 2f904bcd19e337dcfd433dc33bd96816f4a3168e Mon Sep 17 00:00:00 2001 From: dderbentsov Date: Wed, 4 Oct 2023 22:07:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=BE=D0=BD=D1=8B=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=B7=D1=83=D0=B5=D1=82=20startswith?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/personal_info/db/schemas/person.py | 16 +++++++++++++++- src/personal_info/routers/persons.py | 5 +++-- src/personal_info/services/persons.py | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/personal_info/db/schemas/person.py b/src/personal_info/db/schemas/person.py index 8564a9f..d492e5d 100644 --- a/src/personal_info/db/schemas/person.py +++ b/src/personal_info/db/schemas/person.py @@ -98,4 +98,18 @@ class PersonDetail(Person): last_name: str class PersonSearchIn(BaseModel): - full_name: str \ No newline at end of file + 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 \ No newline at end of file diff --git a/src/personal_info/routers/persons.py b/src/personal_info/routers/persons.py index 6199754..2bb6485 100644 --- a/src/personal_info/routers/persons.py +++ b/src/personal_info/routers/persons.py @@ -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) diff --git a/src/personal_info/services/persons.py b/src/personal_info/services/persons.py index e2388e5..23ef36e 100644 --- a/src/personal_info/services/persons.py +++ b/src/personal_info/services/persons.py @@ -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 \ No newline at end of file