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)