54 lines
2 KiB
Python
54 lines
2 KiB
Python
from fastapi import APIRouter, Depends
|
|
from motor.motor_asyncio import AsyncIOMotorDatabase
|
|
|
|
from app.dependencies.auth import get_current_owner_id
|
|
from app.db.mongo import get_database
|
|
from app.schemas.records import ParentCreateRequest, ParentRecordResponse, ParentUpdateRequest
|
|
from app.services.records import create_parent, delete_parent, get_parent, list_parents, update_parent
|
|
|
|
router = APIRouter(prefix="/parents", tags=["parents"])
|
|
|
|
|
|
@router.post("", response_model=ParentRecordResponse)
|
|
async def create_parent_record(
|
|
payload: ParentCreateRequest,
|
|
owner_id: str = Depends(get_current_owner_id),
|
|
database: AsyncIOMotorDatabase = Depends(get_database),
|
|
) -> ParentRecordResponse:
|
|
return await create_parent(database, owner_id, payload)
|
|
|
|
|
|
@router.get("", response_model=list[ParentRecordResponse])
|
|
async def list_parent_records(
|
|
owner_id: str = Depends(get_current_owner_id),
|
|
database: AsyncIOMotorDatabase = Depends(get_database),
|
|
) -> list[ParentRecordResponse]:
|
|
return await list_parents(database, owner_id)
|
|
|
|
|
|
@router.get("/{parent_id}", response_model=ParentRecordResponse)
|
|
async def get_parent_record(
|
|
parent_id: str,
|
|
owner_id: str = Depends(get_current_owner_id),
|
|
database: AsyncIOMotorDatabase = Depends(get_database),
|
|
) -> ParentRecordResponse:
|
|
return await get_parent(database, owner_id, parent_id)
|
|
|
|
|
|
@router.put("/{parent_id}", response_model=ParentRecordResponse)
|
|
async def update_parent_record(
|
|
parent_id: str,
|
|
payload: ParentUpdateRequest,
|
|
owner_id: str = Depends(get_current_owner_id),
|
|
database: AsyncIOMotorDatabase = Depends(get_database),
|
|
) -> ParentRecordResponse:
|
|
return await update_parent(database, owner_id, parent_id, payload)
|
|
|
|
|
|
@router.delete("/{parent_id}", status_code=204)
|
|
async def delete_parent_record(
|
|
parent_id: str,
|
|
owner_id: str = Depends(get_current_owner_id),
|
|
database: AsyncIOMotorDatabase = Depends(get_database),
|
|
) -> None:
|
|
await delete_parent(database, owner_id, parent_id)
|