Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
"""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,
|
||||
)
|
||||
Reference in New Issue
Block a user