[+] update payloads.models

This commit is contained in:
Siarhei Siniak 2025-07-18 09:51:05 +03:00
parent cfdd6b72f0
commit 0ee9e87b7f

@ -1,5 +1,6 @@
import datetime
import decimal
import json
from sqlalchemy.orm import (
mapped_column,
@ -13,6 +14,7 @@ from sqlalchemy import (
Numeric,
DateTime,
UniqueConstraint,
JSON,
)
from typing import (Optional,)
@ -20,44 +22,25 @@ from typing import (Optional,)
class Base(DeclarativeBase):
pass
class Market(Base):
__tablename__ = 'tickers_market'
class Payload(Base):
__tablename__ = 'payloads_payload'
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(String(32))
tickers: Mapped[list['Ticker']] = relationship(
back_populates='market',
)
def __repr__(self) -> str:
return f"Market(id={self.id!r}, name={self.name!r})"
class Ticker(Base):
__tablename__ = 'tickers_ticker'
id: Mapped[int] = mapped_column(ForeignKey(
'tickers_market.id',
ondelete='CASCADE',
))
market: Mapped['Market'] = relationship(
back_populates='tickers'
)
timestamp: Mapped[datetime.datetime] = mapped_column(
DateTime(timezone=True,)
)
value: Mapped[decimal.Decimal] = mapped_column(Numeric(
precision=32, scale=6,
))
output: Mapped[list[str]] = mapped_column(JSON())
list_1: Mapped[list[str]] = mapped_column(JSON())
list_2: Mapped[list[str]] = mapped_column(JSON())
input_hash: Mapped[str] = mapped_column()
__table_args__ = (
UniqueConstraint('id', 'timestamp'),
)
__mapper_args__ = dict(
primary_key=('id', 'timestamp',)
UniqueConstraint('input_hash'),
)
def __repr__(self) -> str:
return f"Ticker(id={self.id!r}, timestamp={self.timestamp!r}, value={self.value!r})"
return json.dumps(dict(
model=str(type(self)),
id=self.id,
output=self.output,
list_1=self.list_1,
list_2=self.list_2,
input_hash=self.input_hash,
))