[+] update payloads.models
This commit is contained in:
parent
cfdd6b72f0
commit
0ee9e87b7f
51
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v1/payloads/models.py
vendored
51
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v1/payloads/models.py
vendored
@ -1,5 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import decimal
|
import decimal
|
||||||
|
import json
|
||||||
|
|
||||||
from sqlalchemy.orm import (
|
from sqlalchemy.orm import (
|
||||||
mapped_column,
|
mapped_column,
|
||||||
@ -13,6 +14,7 @@ from sqlalchemy import (
|
|||||||
Numeric,
|
Numeric,
|
||||||
DateTime,
|
DateTime,
|
||||||
UniqueConstraint,
|
UniqueConstraint,
|
||||||
|
JSON,
|
||||||
)
|
)
|
||||||
|
|
||||||
from typing import (Optional,)
|
from typing import (Optional,)
|
||||||
@ -20,44 +22,25 @@ from typing import (Optional,)
|
|||||||
class Base(DeclarativeBase):
|
class Base(DeclarativeBase):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class Market(Base):
|
class Payload(Base):
|
||||||
__tablename__ = 'tickers_market'
|
__tablename__ = 'payloads_payload'
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
name: Mapped[str] = mapped_column(String(32))
|
output: Mapped[list[str]] = mapped_column(JSON())
|
||||||
|
list_1: Mapped[list[str]] = mapped_column(JSON())
|
||||||
tickers: Mapped[list['Ticker']] = relationship(
|
list_2: Mapped[list[str]] = mapped_column(JSON())
|
||||||
back_populates='market',
|
input_hash: Mapped[str] = mapped_column()
|
||||||
)
|
|
||||||
|
|
||||||
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,
|
|
||||||
))
|
|
||||||
|
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
UniqueConstraint('id', 'timestamp'),
|
UniqueConstraint('input_hash'),
|
||||||
)
|
|
||||||
|
|
||||||
__mapper_args__ = dict(
|
|
||||||
primary_key=('id', 'timestamp',)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
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,
|
||||||
|
))
|
||||||
|
Loading…
Reference in New Issue
Block a user