cud contacts

This commit is contained in:
dderbentsov
2023-08-08 02:19:31 +03:00
parent f097b7ec6c
commit e699143600
8 changed files with 70 additions and 5 deletions

View File

@@ -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

View File

@@ -1,3 +1,4 @@
from .person import *
from .address import *
from .documents import *
from .documents import *
from .contacts import *

View 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

View File

@@ -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:

View 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)

View File

@@ -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:

View File

@@ -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')

View 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)