address create
This commit is contained in:
@@ -12,8 +12,9 @@ def create_app() -> FastAPI:
|
|||||||
return 'ok'
|
return 'ok'
|
||||||
|
|
||||||
|
|
||||||
from personal_info.routers import persons
|
from personal_info.routers import persons, addresses
|
||||||
|
|
||||||
app.include_router(persons.router)
|
app.include_router(persons.router)
|
||||||
|
app.include_router(addresses.router)
|
||||||
|
|
||||||
return app
|
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 pydantic.types import UUID4
|
||||||
from typing import List, Optional, Dict
|
from typing import List, Optional, Dict
|
||||||
|
|
||||||
from personal_info.db import models, schemas
|
from personal_info.db import models
|
||||||
from personal_info.db.schemas import Person, PersonDetail, PersonCreate
|
from personal_info.db.schemas import (Person, PersonDetail, PersonCreate)
|
||||||
from personal_info.services import PersonService, get_persons_service
|
from personal_info.services import PersonService, get_persons_service
|
||||||
|
|
||||||
router = APIRouter(prefix='/persons')
|
router = APIRouter(prefix='/persons')
|
||||||
@@ -30,7 +30,7 @@ async def create_person(
|
|||||||
) -> models.Person:
|
) -> models.Person:
|
||||||
return persons_service.create(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(
|
async def batch_list_persons(
|
||||||
request: Dict = {},
|
request: Dict = {},
|
||||||
persons_service: PersonService = Depends(get_persons_service)
|
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 personal_info.db.session import get_session
|
||||||
|
|
||||||
from .persons import PersonService
|
from .persons import PersonService
|
||||||
|
from .addresses import AddressService
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
__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 typing import Any, List, Dict
|
||||||
|
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
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
|
||||||
from personal_info.db import models
|
from personal_info.db import models
|
||||||
|
|||||||
Reference in New Issue
Block a user