Files
wtf-backend/app/schemas/dtos.py
T

70 lines
1.8 KiB
Python

from pydantic import BaseModel, Field
from typing import List, Optional, Dict, Any
from decimal import Decimal
from datetime import datetime
class UserAuthRequest(BaseModel):
address: str = Field(..., description="EVM 钱包地址")
signature: str = Field(..., description="签名")
message: str = Field(..., description="SIWE 原始签名消息")
class TokenResponse(BaseModel):
access_token: str
token_type: str = "bearer"
address: str
class AccountBalanceDTO(BaseModel):
address: str
collateral_symbol: str
available_balance: Decimal
frozen_balance: Decimal
class LedgerEntryDTO(BaseModel):
id: int
entry_type: str
amount: Decimal
balance_after: Decimal
frozen_after: Decimal
related_market: Optional[str] = None
created_at: datetime
class CreateMarketRequest(BaseModel):
title: str
description: Optional[str] = None
category: str = "Crypto"
tier: int = 1
resolution_time: datetime
outcomes: List[str] = Field(..., min_length=2, max_length=8)
class MarketDTO(BaseModel):
market_address: str
question_id: str
title: str
description: Optional[str] = None
category: str
tier: int
creator: str
status: str
outcomes: List[str]
winning_outcome: Optional[int] = None
resolution_time: datetime
created_at: datetime
class CreateOrderRequest(BaseModel):
market_address: str
outcome_index: int = Field(..., ge=0, le=7)
side: str = Field(..., pattern="^(BUY|SELL)$")
amount: Decimal = Field(..., gt=0)
price: Optional[Decimal] = None
class OrderDTO(BaseModel):
order_id: str
market_address: str
user_address: str
side: str
outcome_index: int
amount: Decimal
status: str
fee: Decimal
created_at: datetime