Build 060.7: implement REST Trade Adapter
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# src/market_data/acquisition/adapters/dzengi/rest_trade_adapter.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from src.market_data.acquisition.adapters.dzengi.mapper import (
|
||||
map_dzengi_rest_agg_trades_to_trades,
|
||||
)
|
||||
from src.market_data.acquisition.adapters.dzengi.parser import (
|
||||
parse_rest_agg_trades,
|
||||
)
|
||||
from src.market_data.acquisition.models.trade import Trade
|
||||
from src.market_data.acquisition.validation.schema import (
|
||||
ValidatedRestAggTradesDocument,
|
||||
)
|
||||
from src.market_data.acquisition.validation.values import (
|
||||
validate_rest_agg_trade_values,
|
||||
)
|
||||
|
||||
|
||||
def adapt_rest_agg_trades_document(
|
||||
document: ValidatedRestAggTradesDocument,
|
||||
*,
|
||||
symbol: str,
|
||||
) -> tuple[Trade, ...]:
|
||||
"""
|
||||
Преобразовать структурно проверенный документ Dzengi aggTrades
|
||||
в канонический immutable-набор Trade.
|
||||
|
||||
Функция последовательно выполняет parsing, value validation
|
||||
и mapping. Schema validation должна быть выполнена вызывающим слоем.
|
||||
Исключения отдельных этапов не перехватываются и не оборачиваются.
|
||||
"""
|
||||
|
||||
trades = parse_rest_agg_trades(document)
|
||||
|
||||
validate_rest_agg_trade_values(trades)
|
||||
|
||||
return map_dzengi_rest_agg_trades_to_trades(
|
||||
trades,
|
||||
symbol=symbol,
|
||||
)
|
||||
Reference in New Issue
Block a user