Files
service-finder/backend/app/schemas/social.py
2026-03-13 10:22:41 +00:00

80 lines
1.9 KiB
Python
Executable File

import uuid # HOZZÁADVA
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)
# --- Értékelések (Reviews) - HOZZÁADVA ---
class ServiceReviewBase(BaseModel):
price_rating: int
quality_rating: int
time_rating: int
communication_rating: int
comment: Optional[str] = None
class ServiceReviewCreate(ServiceReviewBase):
pass
class ServiceReviewResponse(ServiceReviewBase):
id: int
user_id: int
service_id: int
transaction_id: uuid.UUID
is_verified: bool
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
model_config = ConfigDict(from_attributes=True)
class UserStatSchema(BaseModel):
user_id: int
total_xp: int
current_level: int
penalty_points: int
rank_title: Optional[str] = None
badges: List[BadgeSchema] = []
model_config = ConfigDict(from_attributes=True)