feat(backend): complete modular monolith with ledger, fastapi and websocket
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
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
|
||||
Reference in New Issue
Block a user