[+] improve asset_history

This commit is contained in:
Siarhei Siniak 2025-07-16 11:04:17 +03:00
parent 17bfb08e43
commit f4831d5759
2 changed files with 16 additions and 8 deletions

@ -30,12 +30,15 @@ Action = pydantic.RootModel[
]
class AssetHistoryResponse(pydantic.BaseModel):
action: Literal['asset_history']
action: Literal['asset_history'] = 'asset_history'
class message_t(pydantic.BaseModel):
class point_t(pydantic.BaseModel):
asset_name : Annotated[
str,
pydantic.Field(alias='assetName')
pydantic.Field(
alias='assetName',
)
]
time: int
asset_id : Annotated[
@ -48,11 +51,13 @@ class AssetHistoryResponse(pydantic.BaseModel):
message: message_t
class AssetTickerResponse(pydantic.BaseModel):
action: Literal['point']
action: Literal['point'] = 'point'
message: 'AssetHistoryResponse.message_t.point_t'
class AssetsResponse(pydantic.BaseModel):
action: Literal['asset_history']
action: Literal['asset_history'] = 'asset_history'
class message_t(pydantic.BaseModel):
class asset_t(pydantic.BaseModel):
id: int

@ -42,6 +42,9 @@ class WebsocketAPI:
del self.subscriptions_by_asset_id[last_asset_id]
del self.subscriptions_by_client[client]
if not asset_id in self.subscriptions_by_asset_id:
self.subscriptions_by_asset_id[asset_id] = set()
self.subscriptions_by_asset_id[asset_id].add(client)
self.subscriptions_by_client[client] = asset_id
@ -59,10 +62,10 @@ class WebsocketAPI:
)
await client.send_text(
schema.AssetHistoryResponse.model_validate(dict(
message=dict(
schema.AssetHistoryResponse(
message=schema.AssetHistoryResponse.message_t(
points=[
dict(
schema.AssetHistoryResponse.message_t.point_t.model_construct(
asset_name=o.market.name,
asset_id=o.market.id,
time=o.timestamp.timestamp(),
@ -71,7 +74,7 @@ class WebsocketAPI:
for o in tickers
]
)
)).json(),
).json(by_alias=True,),
)
async def assets_index(