from pydantic import BaseModel, Field from typing import Optional from datetime import datetime class RewardBase(BaseModel): title: str = Field(..., max_length=255) description: Optional[str] = None image_url: Optional[str] = None points_required: int = Field(default=1, ge=1) class RewardCreate(RewardBase): pass class RewardUpdate(BaseModel): title: Optional[str] = Field(None, max_length=255) description: Optional[str] = None image_url: Optional[str] = None points_required: Optional[int] = Field(None, ge=1) is_claimed: Optional[bool] = None class RewardInDB(RewardBase): id: str user_id: str is_claimed: bool = False created_at: datetime updated_at: datetime class Config: from_attributes = True class Reward(RewardInDB): pass