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
patronymic: Optional[str]
birth_date: Optional[date]
medical_card_id: str | None
contacts: Optional[List[Contact]] = []
addresses: Optional[List[Address]] = []
documents: Optional[List[Document]] = []
medical_card_id: UUID4 | None
contacts: List[Contact]
class Config:
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,
PersonCreate,
PersonSearchIn,
PersonSearchOut
PersonSearchOut,
PersonUpdateIn,
PersonUpdateOut
)
from personal_info.services import PersonService, get_persons_service
@@ -49,3 +51,11 @@ async def search_person(
persons_service: PersonService = Depends(get_persons_service)
) -> List[models.Person]:
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 starlette.exceptions import HTTPException
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.services.base import BaseService
from pydantic.types import UUID4
class PersonService(BaseService[Person, PersonCreate, Any]):
def __init__(self, db_session: Session):