from typing import Optional from pydantic import BaseModel from datetime import datetime import enum class TransactionType(str, enum.Enum): DEPOSIT = "deposit" WITHDRAWAL = "withdrawal" TRANSFER = "transfer" BOT_PURCHASE = "bot_purchase" BOT_EARNING = "bot_earning" ADMIN_ADJUSTMENT = "admin_adjustment" class TransactionBase(BaseModel): user_id: int wallet_id: int amount: float transaction_type: TransactionType description: Optional[str] = None related_transaction_id: Optional[int] = None deposit_id: Optional[int] = None withdrawal_id: Optional[int] = None bot_purchase_id: Optional[int] = None class TransactionCreate(TransactionBase): pass class TransactionUpdate(BaseModel): description: Optional[str] = None related_transaction_id: Optional[int] = None class TransactionInDBBase(TransactionBase): id: int created_at: datetime updated_at: datetime class Config: orm_mode = True class Transaction(TransactionInDBBase): pass