Files
voidea/app/api/v1/feedback.py
T

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,
)