39 lines
1007 B
Python
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
|