search and update
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user