from sqlalchemy import Column, Integer, Float, DateTime
from sqlalchemy.ext.declarative import declared_attr
from .database import Base

class CoinBase(Base):
    __abstract__ = True  # Klasa abstrakcyjna (nie tworzy tabeli)

    id = Column(Integer, primary_key=True, index=True)
    timestamp = Column(DateTime, index=True)
    open = Column(Float)
    high = Column(Float)
    low = Column(Float)
    close = Column(Float)
    volume = Column(Float)
    close_time = Column(DateTime)
    quote_asset_volume = Column(Float)
    number_of_trades = Column(Integer)
    taker_buy_base_asset_volume = Column(Float)
    taker_buy_quote_asset_volume = Column(Float)
    ignore = Column(Float)

    @declared_attr
    def __tablename__(cls):
        """Automatycznie ustawia nazwę tabeli na podstawie nazwy klasy."""
        return cls.__name__.lower()

# Poszczególne pary dziedziczące po CoinBase
class ADAUSDT(CoinBase):
    pass

class SHIBUSDT(CoinBase):
    pass

class BTCUSDT(CoinBase):
    pass

