from sqlalchemy import Column, Integer, String, Date, Float, ForeignKey, UniqueConstraint
from sqlalchemy.orm import relationship
from .database import Base

class Instrument(Base):
    __tablename__ = "instruments"
    id = Column(Integer, primary_key=True)
    symbol = Column(String, unique=True, nullable=False)
    name = Column(String)

class KPI(Base):
    __tablename__ = "kpis"
    id = Column(Integer, primary_key=True)
    code = Column(String, unique=True, nullable=False)
    name = Column(String)

class KPIValue(Base):
    __tablename__ = "kpi_values"
    id = Column(Integer, primary_key=True)
    instrument_id = Column(Integer, ForeignKey("instruments.id"))
    kpi_id = Column(Integer, ForeignKey("kpis.id"))
    frequency = Column(String, nullable=False)
    date = Column(Date, nullable=False)
    value = Column(Float)
    currency = Column(String)

    __table_args__ = (UniqueConstraint('instrument_id', 'kpi_id', 'frequency', 'date', name='unique_kpi_entry'),)
