Spaces:
Sleeping
Sleeping
| import uuid | |
| from fastapi import APIRouter, Depends, HTTPException | |
| from sqlmodel.ext.asyncio.session import AsyncSession | |
| from src.core.database import get_async_session | |
| from src.core.schemas import BaseResponse | |
| from src.auth.utils import get_current_user | |
| from src.journaling.schemas import ( | |
| JournalCreate, | |
| JournalUpdate, | |
| JournalResponse, | |
| ) | |
| from src.journaling.service import ( | |
| create_or_update_journal, | |
| get_all_journals, | |
| get_journal, | |
| update_journal, | |
| delete_journal, | |
| ) | |
| router = APIRouter(prefix="/journal", tags=["Journal"]) | |
| async def create_or_update( | |
| data: JournalCreate, | |
| user_id: uuid.UUID = Depends(get_current_user), | |
| session: AsyncSession = Depends(get_async_session), | |
| ): | |
| data.user_id = user_id | |
| try: | |
| record = await create_or_update_journal(data, session) | |
| return BaseResponse(status_code=200, data=record) | |
| except ValueError as e: | |
| raise HTTPException(status_code=404, detail=str(e)) | |
| async def list_user_journals( | |
| user_id: uuid.UUID = Depends(get_current_user), | |
| session: AsyncSession = Depends(get_async_session), | |
| ): | |
| records = await get_all_journals(user_id, session) | |
| return BaseResponse(status_code=200, data=records) | |
| async def fetch_single( | |
| journal_id: uuid.UUID, | |
| user_id: uuid.UUID = Depends(get_current_user), | |
| session: AsyncSession = Depends(get_async_session), | |
| ): | |
| try: | |
| record = await get_journal(journal_id, user_id, session) | |
| return BaseResponse(status_code=200, data=record) | |
| except ValueError as e: | |
| if str(e) == "Not authorized": | |
| raise HTTPException(status_code=403, detail=str(e)) | |
| raise HTTPException(status_code=404, detail=str(e)) | |
| async def update_entry( | |
| journal_id: uuid.UUID, | |
| data: JournalUpdate, | |
| user_id: uuid.UUID = Depends(get_current_user), | |
| session: AsyncSession = Depends(get_async_session), | |
| ): | |
| try: | |
| record = await update_journal(journal_id, data, user_id, session) | |
| return BaseResponse(status_code=200, data=record) | |
| except ValueError as e: | |
| if str(e) == "Not authorized": | |
| raise HTTPException(status_code=403, detail=str(e)) | |
| raise HTTPException(status_code=404, detail=str(e)) | |
| async def delete_entry( | |
| journal_id: uuid.UUID, | |
| user_id: uuid.UUID = Depends(get_current_user), | |
| session: AsyncSession = Depends(get_async_session), | |
| ): | |
| try: | |
| await delete_journal(journal_id, user_id, session) | |
| return BaseResponse(status_code=200, data="Deleted") | |
| except ValueError as e: | |
| if str(e) == "Not authorized": | |
| raise HTTPException(status_code=403, detail=str(e)) | |
| raise HTTPException(status_code=404, detail=str(e)) | |