cud contacts
This commit is contained in:
@@ -12,10 +12,11 @@ def create_app() -> FastAPI:
|
||||
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(addresses.router)
|
||||
app.include_router(documents.router)
|
||||
app.include_router(contacts.router)
|
||||
|
||||
return app
|
||||
@@ -1,3 +1,4 @@
|
||||
from .person import *
|
||||
from .address 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)
|
||||
|
||||
@router.delete('/{id}', status_code=200)
|
||||
async def update_address(
|
||||
async def delete_address(
|
||||
id: UUID4,
|
||||
addresses_service: AddressService = Depends(get_addresses_service)
|
||||
) -> 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)
|
||||
|
||||
@router.delete('/{id}', status_code=200)
|
||||
async def update_document(
|
||||
async def delete_document(
|
||||
id: UUID4,
|
||||
documents_service: DocumentService = Depends(get_documents_service)
|
||||
) -> None:
|
||||
|
||||
@@ -6,6 +6,7 @@ from personal_info.db.session import get_session
|
||||
from .persons import PersonService
|
||||
from .addresses import AddressService
|
||||
from .documents import DocumentService
|
||||
from .contacts import ContactService
|
||||
|
||||
def get_persons_service(db_session: Session = Depends(get_session)) -> PersonService:
|
||||
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:
|
||||
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