57 lines
1.1 KiB
Python

from typing import Optional
from pydantic import BaseModel, Field
from datetime import datetime
import enum
class WithdrawalStatus(str, enum.Enum):
PENDING = "pending"
APPROVED = "approved"
REJECTED = "rejected"
class WithdrawalBase(BaseModel):
amount: float = Field(..., gt=0)
fee: float = Field(0.0, ge=0)
wallet_address: str
admin_notes: Optional[str] = None
class WithdrawalCreate(WithdrawalBase):
user_id: int
class WithdrawalUpdate(BaseModel):
status: Optional[WithdrawalStatus] = None
transaction_hash: Optional[str] = None
admin_notes: Optional[str] = None
class WithdrawalInDBBase(WithdrawalBase):
id: int
user_id: int
status: WithdrawalStatus
transaction_hash: Optional[str] = None
created_at: datetime
updated_at: datetime
class Config:
orm_mode = True
class Withdrawal(WithdrawalInDBBase):
pass
class WithdrawalRequest(BaseModel):
amount: float = Field(..., gt=0)
wallet_address: str
class WithdrawalApprove(BaseModel):
transaction_hash: str
admin_notes: Optional[str] = None
class WithdrawalReject(BaseModel):
admin_notes: str