
- Create project structure with FastAPI - Add database models for blocks, transactions, arbitrages, pools, and DEXes - Implement Solana RPC client for fetching blockchain data - Create arbitrage detection algorithm - Implement comprehensive API endpoints for analytics - Set up database migrations with Alembic - Add detailed project documentation generated with BackendIM... (backend.im) Co-Authored-By: Claude <noreply@anthropic.com>
72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional, Dict, Any
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class PoolBase(BaseModel):
|
|
dex_id: int
|
|
address: str
|
|
token_a_address: str
|
|
token_a_symbol: Optional[str] = None
|
|
token_a_name: Optional[str] = None
|
|
token_a_decimals: Optional[int] = None
|
|
token_b_address: str
|
|
token_b_symbol: Optional[str] = None
|
|
token_b_name: Optional[str] = None
|
|
token_b_decimals: Optional[int] = None
|
|
token_a_reserve: Optional[float] = None
|
|
token_b_reserve: Optional[float] = None
|
|
last_updated_slot: Optional[int] = None
|
|
fee_rate: Optional[float] = None
|
|
pool_type: Optional[str] = None
|
|
is_active: bool = True
|
|
|
|
|
|
class PoolCreate(PoolBase):
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
class PoolUpdate(BaseModel):
|
|
token_a_symbol: Optional[str] = None
|
|
token_a_name: Optional[str] = None
|
|
token_a_decimals: Optional[int] = None
|
|
token_b_symbol: Optional[str] = None
|
|
token_b_name: Optional[str] = None
|
|
token_b_decimals: Optional[int] = None
|
|
token_a_reserve: Optional[float] = None
|
|
token_b_reserve: Optional[float] = None
|
|
last_updated_slot: Optional[int] = None
|
|
volume_24h: Optional[float] = None
|
|
fees_24h: Optional[float] = None
|
|
tvl: Optional[float] = None
|
|
fee_rate: Optional[float] = None
|
|
pool_type: Optional[str] = None
|
|
is_active: Optional[bool] = None
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
class PoolInDBBase(PoolBase):
|
|
id: int
|
|
volume_24h: Optional[float] = None
|
|
fees_24h: Optional[float] = None
|
|
tvl: Optional[float] = None
|
|
metadata: Optional[Dict[str, Any]] = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class Pool(PoolInDBBase):
|
|
pass
|
|
|
|
|
|
class PoolWithDex(Pool):
|
|
dex_name: str
|
|
dex_address: str
|
|
|
|
|
|
class PoolList(BaseModel):
|
|
pools: List[PoolWithDex]
|
|
total: int |