# /opt/docker/dev/service_finder/backend/app/schemas/social.py from pydantic import BaseModel, ConfigDict from typing import Optional, List from datetime import datetime from app.models.social import ModerationStatus, SourceType # --- Alap Sémák (Szolgáltatók) --- class ServiceProviderBase(BaseModel): name: str address: Optional[str] = None category: Optional[str] = None source: SourceType = SourceType.manual class ServiceProviderCreate(BaseModel): name: str address: str category: Optional[str] = None class ServiceProviderResponse(ServiceProviderBase): id: int status: ModerationStatus validation_score: int evidence_image_path: Optional[str] = None added_by_user_id: Optional[int] = None created_at: datetime model_config = ConfigDict(from_attributes=True) # --- Gamifikáció és Szavazás (Voting & Gamification) --- class VoteCreate(BaseModel): vote_value: int class LeaderboardEntry(BaseModel): username: str points: int rank: int model_config = ConfigDict(from_attributes=True) class BadgeSchema(BaseModel): id: int name: str description: str icon_url: Optional[str] = None # JAVÍTVA: icon_url a modell szerint model_config = ConfigDict(from_attributes=True) # Pydantic V2 kompatibilis class UserStatSchema(BaseModel): user_id: int total_xp: int # JAVÍTVA: total_xp a modell szerint current_level: int penalty_points: int # JAVÍTVA: új mező rank_title: Optional[str] = None badges: List[BadgeSchema] = [] model_config = ConfigDict(from_attributes=True)