search and update
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -48,4 +50,12 @@ async def search_person(
|
|||||||
query_params: PersonSearchIn,
|
query_params: PersonSearchIn,
|
||||||
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)
|
||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user