search and update

This commit is contained in:
dderbentsov
2023-10-09 00:27:58 +03:00
parent 2f904bcd19
commit 6c80a9e4b7
3 changed files with 29 additions and 9 deletions

View File

@@ -106,10 +106,19 @@ class PersonSearchOut(BaseModel):
last_name: str last_name: str
patronymic: Optional[str] patronymic: Optional[str]
birth_date: Optional[date] birth_date: Optional[date]
medical_card_id: str | None medical_card_id: UUID4 | None
contacts: Optional[List[Contact]] = [] contacts: List[Contact]
addresses: Optional[List[Address]] = []
documents: Optional[List[Document]] = []
class Config: class Config:
orm_mode = True orm_mode = True
class PersonUpdateIn(BaseModel):
medical_card_id: UUID4
class Config:
orm_mode = True
class PersonUpdateOut(BaseModel):
id: UUID4
class Config:
orm_mode = True

View File

@@ -9,7 +9,9 @@ from personal_info.db.schemas import (
PersonDetail, PersonDetail,
PersonCreate, PersonCreate,
PersonSearchIn, PersonSearchIn,
PersonSearchOut PersonSearchOut,
PersonUpdateIn,
PersonUpdateOut
) )
from personal_info.services import PersonService, get_persons_service from personal_info.services import PersonService, get_persons_service
@@ -49,3 +51,11 @@ async def search_person(
persons_service: PersonService = Depends(get_persons_service) persons_service: PersonService = Depends(get_persons_service)
) -> List[models.Person]: ) -> List[models.Person]:
return persons_service.search(query_params) return persons_service.search(query_params)
@router.patch('/{person_id}', response_model=PersonUpdateOut)
async def update_person(
person_id: UUID4,
person: PersonUpdateIn,
person_service: PersonService = Depends(get_persons_service)
):
return person_service.update(person_id, person)

View File

@@ -1,11 +1,12 @@
from typing import Any, List, Dict from typing import Any, List, Dict, Optional
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from starlette.exceptions import HTTPException from starlette.exceptions import HTTPException
from personal_info.db.models import Person, Address, Document, Contact from personal_info.db.models import Person, Address, Document, Contact
from personal_info.db.schemas import PersonCreate, PersonBase from personal_info.db.schemas import PersonCreate, PersonBase, PersonUpdateIn, PersonUpdateOut
from personal_info.db import models from personal_info.db import models
from personal_info.services.base import BaseService from personal_info.services.base import BaseService
from pydantic.types import UUID4
class PersonService(BaseService[Person, PersonCreate, Any]): class PersonService(BaseService[Person, PersonCreate, Any]):
def __init__(self, db_session: Session): def __init__(self, db_session: Session):