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