from __future__ import annotations from datetime import date from decimal import Decimal from sqlalchemy import BigInteger, Date, ForeignKey, UniqueConstraint from sqlalchemy.orm import Mapped, mapped_column from app.core.config import settings from app.db.base import Base from app.db.types import AuditMixin, IdMixin, Percent, qualified class FundingRate(IdMixin, AuditMixin, Base): """Ставка фондирования портфеля в валюте, % годовых, с даты effective_from до следующей записи (D27).""" __tablename__ = "funding_rate" __table_args__ = ( UniqueConstraint( "portfolio_id", "currency_id", "effective_from", name="uq_funding_rate_portfolio_currency_date", ), {"schema": settings.DATABASE_SCHEMA} if settings.DATABASE_SCHEMA else {}, ) portfolio_id: Mapped[int] = mapped_column( BigInteger, ForeignKey(qualified("portfolio.id")), nullable=False ) currency_id: Mapped[int] = mapped_column( BigInteger, ForeignKey(qualified("currency.id")), nullable=False ) effective_from: Mapped[date] = mapped_column(Date, nullable=False) rate: Mapped[Decimal] = mapped_column(Percent, nullable=False)