Files
popa_minecraft_launcher_api/app/models/promo.py
2025-12-20 19:51:18 +05:00

34 lines
956 B
Python

from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
class PromoBase(BaseModel):
code: str = Field(..., min_length=3, max_length=64)
reward_coins: int = Field(..., ge=1, le=1_000_000)
max_uses: Optional[int] = Field(default=None, ge=1) # None = бесконечно
is_active: bool = True
starts_at: Optional[datetime] = None
ends_at: Optional[datetime] = None
class PromoCreate(PromoBase):
pass
class PromoUpdate(BaseModel):
reward_coins: Optional[int] = Field(default=None, ge=1, le=1_000_000)
max_uses: Optional[int] = Field(default=None, ge=1)
is_active: Optional[bool] = None
starts_at: Optional[datetime] = None
ends_at: Optional[datetime] = None
class PromoInDB(PromoBase):
id: str
uses_count: int
created_at: datetime
updated_at: datetime
class PromoRedeemResponse(BaseModel):
code: str
reward_coins: int
new_balance: int