address create
This commit is contained in:
@@ -12,8 +12,9 @@ def create_app() -> FastAPI:
|
||||
return 'ok'
|
||||
|
||||
|
||||
from personal_info.routers import persons
|
||||
from personal_info.routers import persons, addresses
|
||||
|
||||
app.include_router(persons.router)
|
||||
app.include_router(addresses.router)
|
||||
|
||||
return app
|
||||
@@ -1 +1,2 @@
|
||||
from .person import *
|
||||
from .person import *
|
||||
from .address import *
|
||||
20
src/personal_info/db/schemas/address.py
Normal file
20
src/personal_info/db/schemas/address.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from datetime import date
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, Field, ConfigDict
|
||||
from pydantic.types import UUID4
|
||||
|
||||
class AddressCreateIn(BaseModel):
|
||||
person_id: UUID4
|
||||
category: str
|
||||
region: Optional[str]
|
||||
city: Optional[str]
|
||||
street: Optional[str]
|
||||
house: Optional[str]
|
||||
flat: Optional[str]
|
||||
|
||||
class AddressCreateOut(AddressCreateIn):
|
||||
id: UUID4
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
23
src/personal_info/routers/addresses.py
Normal file
23
src/personal_info/routers/addresses.py
Normal file
@@ -0,0 +1,23 @@
|
||||
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 (AddressCreateOut, AddressCreateIn)
|
||||
from personal_info.services import AddressService, get_addresses_service
|
||||
|
||||
router = APIRouter(prefix='/address')
|
||||
|
||||
@router.post('/', status_code=201, response_model=AddressCreateOut)
|
||||
async def create_address(
|
||||
address: AddressCreateIn, addresses_service: AddressService = Depends(get_addresses_service)
|
||||
) -> models.Address:
|
||||
return addresses_service.create(address)
|
||||
|
||||
# @router.post('/batch', response_model=List[Person])
|
||||
# async def batch_list_persons(
|
||||
# request: Dict = {},
|
||||
# persons_service: PersonService = Depends(get_persons_service)
|
||||
# ) -> List[models.Person]:
|
||||
# return persons_service.batch_get(request)
|
||||
@@ -3,8 +3,8 @@ from fastapi.routing import APIRouter
|
||||
from pydantic.types import UUID4
|
||||
from typing import List, Optional, Dict
|
||||
|
||||
from personal_info.db import models, schemas
|
||||
from personal_info.db.schemas import Person, PersonDetail, PersonCreate
|
||||
from personal_info.db import models
|
||||
from personal_info.db.schemas import (Person, PersonDetail, PersonCreate)
|
||||
from personal_info.services import PersonService, get_persons_service
|
||||
|
||||
router = APIRouter(prefix='/persons')
|
||||
@@ -30,7 +30,7 @@ async def create_person(
|
||||
) -> models.Person:
|
||||
return persons_service.create(person)
|
||||
|
||||
@router.post('/batch', response_model=List[schemas.Person])
|
||||
@router.post('/batch', response_model=List[Person])
|
||||
async def batch_list_persons(
|
||||
request: Dict = {},
|
||||
persons_service: PersonService = Depends(get_persons_service)
|
||||
|
||||
@@ -4,8 +4,12 @@ from sqlalchemy.orm import Session
|
||||
from personal_info.db.session import get_session
|
||||
|
||||
from .persons import PersonService
|
||||
from .addresses import AddressService
|
||||
|
||||
def get_persons_service(db_session: Session = Depends(get_session)) -> PersonService:
|
||||
return PersonService(db_session)
|
||||
|
||||
__all__ = ('get_persons_service')
|
||||
def get_addresses_service(db_session: Session = Depends(get_session)) -> AddressService:
|
||||
return AddressService(db_session)
|
||||
|
||||
__all__ = ('get_persons_service', 'get_addresses_service')
|
||||
9
src/personal_info/services/addresses.py
Normal file
9
src/personal_info/services/addresses.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from typing import Any, List, Dict
|
||||
from sqlalchemy.orm import Session
|
||||
from personal_info.db.schemas import (AddressCreateIn)
|
||||
from personal_info.db import models
|
||||
from personal_info.services.base import BaseService
|
||||
|
||||
class AddressService(BaseService[models.Address, AddressCreateIn, Any]):
|
||||
def __init__(self, db_session: Session):
|
||||
super(AddressService, self).__init__(models.Address, db_session)
|
||||
@@ -1,7 +1,7 @@
|
||||
from typing import Any, List, Dict
|
||||
|
||||
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 import models
|
||||
|
||||
Reference in New Issue
Block a user