from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from typing import List from app.db.session import get_db from app.schemas.social import ServiceProviderCreate, ServiceProviderResponse, VoteCreate from app.models.social import ServiceProvider, Vote from app.models.user import User # --- JAVÍTÁS: Nem osztályt, hanem függvényeket importálunk --- from app.services.social_service import vote_for_provider, get_leaderboard # ------------------------------------------------------------- router = APIRouter() # ... (itt lehetnek a create_provider stb. végpontok, azokat hagyd meg) ... @router.post("/vote", status_code=status.HTTP_200_OK) async def cast_vote( vote_data: VoteCreate, db: AsyncSession = Depends(get_db), # Itt ideális esetben a current_user-t használnánk, de most egyszerűsítünk: # current_user: User = Depends(get_current_user) ): # Most a teszt kedvéért feltételezzük, hogy a vote_data-ban jön a user_id is, # vagy fix userrel tesztelünk. A Seed script úgyis közvetlenül a service-t hívja. # Hívjuk meg a szerviz függvényt: result = await vote_for_provider(db, vote_data.user_id, vote_data.provider_id, vote_data.vote_value) if "error" in result: raise HTTPException(status_code=400, detail=result["error"]) return result @router.get("/competitions/{competition_id}/leaderboard") async def leaderboard(competition_id: int, db: AsyncSession = Depends(get_db)): results = await get_leaderboard(db, competition_id) # Formázzuk a választ return [{"user": row.full_name, "points": row.points} for row in results]