Files

40 lines
1.2 KiB
Python

"""Feedback API routes for VoIdea."""
from typing import Annotated, Optional
from fastapi import APIRouter, Depends, Request, status
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.dependencies import get_current_user, get_db, get_optional_user
from app.core.limiter import limiter
from app.models.user import User
from app.schemas.feedback import FeedbackCreate, FeedbackResponse
from app.services.feedback_service import FeedbackService
router = APIRouter()
@router.post("", response_model=FeedbackResponse, status_code=status.HTTP_201_CREATED)
@limiter.limit("5/minute")
async def create_feedback(
request: Request,
body: FeedbackCreate,
db: AsyncSession = Depends(get_db),
user: Optional[User] = Depends(get_optional_user),
):
service = FeedbackService(db)
fb = await service.create(
user_id=user.id if user else None,
text=body.text,
page_url=body.page_url,
)
return FeedbackResponse(
id=str(fb.id),
user_id=str(fb.user_id) if fb.user_id else None,
text=fb.text,
page_url=fb.page_url,
status=fb.status,
created_at=fb.created_at,
updated_at=fb.updated_at,
)