ssf-2025-ana/Backend/router/endpoints/guestbook.py
2025-09-13 16:18:28 +09:00

63 lines
2 KiB
Python

from typing import List
from fastapi import APIRouter, HTTPException, Depends, status
from Backend.core.security import get_current_user
from Backend.schemas.guestbook import (
GuestBookCreate,
GuestbookUpdate,
GuestbookResponse,
)
from Backend.schemas.user import User
from Backend.services.guestbook_service import GuestbookService
router = APIRouter(prefix="/guestbook", tags=["guestbook"])
guestbook_service = GuestbookService()
@router.post("", status_code=status.HTTP_201_CREATED, response_model=GuestbookResponse)
async def create_guestbook(
guestbook: GuestBookCreate, current_user: User = Depends(get_current_user)
) -> GuestbookResponse:
try:
response = await guestbook_service.create_guestbook(guestbook, current_user)
return response
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
@router.get("/{target_user_id}", response_model=List[GuestbookResponse])
async def get_guestbook(target_user_id: int):
try:
response = await guestbook_service.get_target_user_guestbooks(target_user_id)
response.reverse()
return response
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
@router.put("/{id}", response_model=GuestbookResponse)
async def update_guestbook(
id: int,
guestbook: GuestbookUpdate,
) -> GuestbookResponse:
try:
response = await guestbook_service.update_guestbook_by_id(id, guestbook.content)
return response
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))
@router.delete("/{id}")
async def delete_guestbook(
id: int,
user: User = Depends(get_current_user),
) -> dict:
try:
is_success = await guestbook_service.delete_guestbook_by_id(id, user.id)
if is_success:
return {"detail": "success"}
else:
raise HTTPException(status_code=404, detail="guestbook not found")
except Exception as e:
raise HTTPException(status_code=400, detail=str(e))