Files
HabitForge-zepp/backend/schemas/challenge.py
T

39 lines
1007 B
Python

"""Challenge Pydantic schemas."""
from pydantic import BaseModel
from typing import Optional, List
from datetime import date
from backend.schemas.tracking import TrackingResponse
from backend.models.tracking import Tracking
class ChallengeBase(BaseModel):
"""Base schema for challenge."""
name: str
period_type: str
daily_target: int
start_date: date
end_date: Optional[date] = None
unit_type: Optional[str] = "reps"
rest_days: Optional[str] = None
icon: Optional[str] = "fa-dumbbell"
image_url: Optional[str] = None
description: Optional[str] = None
frequency_count: Optional[int] = None
selected_days: Optional[str] = None
class ChallengeCreate(ChallengeBase):
"""Schema for creating a challenge."""
pass
class ChallengeResponse(ChallengeBase):
"""Schema for challenge response."""
id: int
created_at: date
display_order: int = 0
trackings: List[TrackingResponse] = []
class Config:
from_attributes = True