from fastapi import APIRouter, Depends
from sqlmodel import Session

from app.core.db import get_session
from app.models.models import User
from app.api import deps
from app.schemas.vote import VoteRequest
from app.services import vote_service

router = APIRouter()


@router.post("/questions/{question_id}/vote", status_code=200)
def vote_question(
    question_id: int,
    payload: VoteRequest,
    current_user: User = Depends(deps.get_current_active_user),
    session: Session = Depends(get_session),
):
    return vote_service.upsert_vote(session, current_user.id, question_id, payload.value)


@router.delete("/questions/{question_id}/vote", status_code=200)
def remove_vote(
    question_id: int,
    current_user: User = Depends(deps.get_current_active_user),
    session: Session = Depends(get_session),
):
    return vote_service.remove_vote(session, current_user.id, question_id)
