cud contacts
This commit is contained in:
@@ -12,10 +12,11 @@ def create_app() -> FastAPI:
|
|||||||
return 'ok'
|
return 'ok'
|
||||||
|
|
||||||
|
|
||||||
from personal_info.routers import persons, addresses, documents
|
from personal_info.routers import persons, addresses, documents, contacts
|
||||||
|
|
||||||
app.include_router(persons.router)
|
app.include_router(persons.router)
|
||||||
app.include_router(addresses.router)
|
app.include_router(addresses.router)
|
||||||
app.include_router(documents.router)
|
app.include_router(documents.router)
|
||||||
|
app.include_router(contacts.router)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
from .person import *
|
from .person import *
|
||||||
from .address import *
|
from .address import *
|
||||||
from .documents import *
|
from .documents import *
|
||||||
|
from .contacts import *
|
||||||
19
src/personal_info/db/schemas/contacts.py
Normal file
19
src/personal_info/db/schemas/contacts.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
from datetime import date
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
from pydantic import BaseModel, Field, ConfigDict
|
||||||
|
from pydantic.types import UUID4
|
||||||
|
|
||||||
|
class ContactCreateIn(BaseModel):
|
||||||
|
person_id: UUID4
|
||||||
|
category: str
|
||||||
|
value: str
|
||||||
|
|
||||||
|
class ContactCreateOut(ContactCreateIn):
|
||||||
|
id: UUID4
|
||||||
|
class Config:
|
||||||
|
orm_mode = True
|
||||||
|
|
||||||
|
class ContactUpdateIn(BaseModel):
|
||||||
|
category: str | None
|
||||||
|
value: str | None
|
||||||
@@ -24,7 +24,7 @@ async def update_address(
|
|||||||
return addresses_service.update(id, address)
|
return addresses_service.update(id, address)
|
||||||
|
|
||||||
@router.delete('/{id}', status_code=200)
|
@router.delete('/{id}', status_code=200)
|
||||||
async def update_address(
|
async def delete_address(
|
||||||
id: UUID4,
|
id: UUID4,
|
||||||
addresses_service: AddressService = Depends(get_addresses_service)
|
addresses_service: AddressService = Depends(get_addresses_service)
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|||||||
31
src/personal_info/routers/contacts.py
Normal file
31
src/personal_info/routers/contacts.py
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
from fastapi import Depends, Request
|
||||||
|
from fastapi.routing import APIRouter
|
||||||
|
from pydantic.types import UUID4
|
||||||
|
from typing import List, Optional, Dict
|
||||||
|
|
||||||
|
from personal_info.db import models
|
||||||
|
from personal_info.db.schemas import (ContactCreateOut, ContactCreateIn, ContactUpdateIn)
|
||||||
|
from personal_info.services import ContactService, get_contacts_service
|
||||||
|
|
||||||
|
router = APIRouter(prefix='/contacts')
|
||||||
|
|
||||||
|
@router.post('/', status_code=201, response_model=ContactCreateOut)
|
||||||
|
async def create_contact(
|
||||||
|
contact: ContactCreateIn, contacts_service: ContactService = Depends(get_contacts_service)
|
||||||
|
) -> models.Contact:
|
||||||
|
return contacts_service.create(contact)
|
||||||
|
|
||||||
|
@router.patch('/{id}', response_model=ContactCreateOut)
|
||||||
|
async def update_contact(
|
||||||
|
id: UUID4,
|
||||||
|
contact: ContactUpdateIn,
|
||||||
|
contacts_service: ContactService = Depends(get_contacts_service)
|
||||||
|
) -> Optional[models.Contact]:
|
||||||
|
return contacts_service.update(id, contact)
|
||||||
|
|
||||||
|
@router.delete('/{id}', status_code=200)
|
||||||
|
async def delete_contact(
|
||||||
|
id: UUID4,
|
||||||
|
contacts_service: ContactService = Depends(get_contacts_service)
|
||||||
|
) -> None:
|
||||||
|
return contacts_service.delete(id)
|
||||||
@@ -24,7 +24,7 @@ async def update_document(
|
|||||||
return documents_service.update(id, document)
|
return documents_service.update(id, document)
|
||||||
|
|
||||||
@router.delete('/{id}', status_code=200)
|
@router.delete('/{id}', status_code=200)
|
||||||
async def update_document(
|
async def delete_document(
|
||||||
id: UUID4,
|
id: UUID4,
|
||||||
documents_service: DocumentService = Depends(get_documents_service)
|
documents_service: DocumentService = Depends(get_documents_service)
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from personal_info.db.session import get_session
|
|||||||
from .persons import PersonService
|
from .persons import PersonService
|
||||||
from .addresses import AddressService
|
from .addresses import AddressService
|
||||||
from .documents import DocumentService
|
from .documents import DocumentService
|
||||||
|
from .contacts import ContactService
|
||||||
|
|
||||||
def get_persons_service(db_session: Session = Depends(get_session)) -> PersonService:
|
def get_persons_service(db_session: Session = Depends(get_session)) -> PersonService:
|
||||||
return PersonService(db_session)
|
return PersonService(db_session)
|
||||||
@@ -16,4 +17,7 @@ def get_addresses_service(db_session: Session = Depends(get_session)) -> Address
|
|||||||
def get_documents_service(db_session: Session = Depends(get_session)) -> DocumentService:
|
def get_documents_service(db_session: Session = Depends(get_session)) -> DocumentService:
|
||||||
return DocumentService(db_session)
|
return DocumentService(db_session)
|
||||||
|
|
||||||
__all__ = ('get_persons_service', 'get_addresses_service', 'get_documents_service')
|
def get_contacts_service(db_session: Session = Depends(get_session)) -> ContactService:
|
||||||
|
return ContactService(db_session)
|
||||||
|
|
||||||
|
__all__ = ('get_persons_service', 'get_addresses_service', 'get_documents_service', 'get_contacts_service')
|
||||||
9
src/personal_info/services/contacts.py
Normal file
9
src/personal_info/services/contacts.py
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
from typing import Any, List, Dict
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from personal_info.db.schemas import (ContactCreateIn)
|
||||||
|
from personal_info.db import models
|
||||||
|
from personal_info.services.base import BaseService
|
||||||
|
|
||||||
|
class ContactService(BaseService[models.Contact, ContactCreateIn, Any]):
|
||||||
|
def __init__(self, db_session: Session):
|
||||||
|
super(ContactService, self).__init__(models.Contact, db_session)
|
||||||
Reference in New Issue
Block a user