add promocodes
This commit is contained in:
33
app/models/promo.py
Normal file
33
app/models/promo.py
Normal file
@ -0,0 +1,33 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user