27 lines
1.2 KiB
Python
27 lines
1.2 KiB
Python
from sqlalchemy import Column, String, Float, Integer, DateTime, ForeignKey, Boolean
|
|
from sqlalchemy.sql import func
|
|
from sqlalchemy.orm import relationship
|
|
from app.database import Base
|
|
|
|
class Market(Base):
|
|
__tablename__ = "markets"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
exchange_id = Column(String, index=True)
|
|
rank = Column(Integer, nullable=True)
|
|
base_id = Column(String, index=True) # Asset slug for base
|
|
quote_id = Column(String, index=True) # Asset slug for quote
|
|
base_symbol = Column(String, index=True) # e.g., BTC
|
|
quote_symbol = Column(String, index=True) # e.g., USD
|
|
price_quote = Column(Float) # Price in quote currency
|
|
price_usd = Column(Float) # Price in USD
|
|
volume_usd_24hr = Column(Float)
|
|
percent_exchange_volume = Column(Float, nullable=True)
|
|
trades_count_24hr = Column(Integer, nullable=True)
|
|
updated_timestamp = Column(Integer, nullable=True)
|
|
|
|
# Last time the data was updated in our database
|
|
last_updated = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
|
|
|
|
def __repr__(self):
|
|
return f"<Market {self.base_symbol}/{self.quote_symbol} on {self.exchange_id}>" |