build 046: integrate canonical candles feed into acquisition service
This commit is contained in:
@@ -2,15 +2,16 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from src.market_data.acquisition.models.candle import Candle
|
||||
from src.market_data.acquisition.models.instrument import Instrument
|
||||
from src.market_data.acquisition.models.quote import Quote
|
||||
from src.market_data.acquisition.registry import (
|
||||
CandlesFeedRegistry,
|
||||
InstrumentFeedRegistry,
|
||||
QuoteFeedRegistry,
|
||||
)
|
||||
|
||||
|
||||
# Application-level сервис получения справочника инструментов.
|
||||
class InstrumentAcquisitionService:
|
||||
def __init__(
|
||||
self,
|
||||
@@ -23,19 +24,11 @@ class InstrumentAcquisitionService:
|
||||
self,
|
||||
source_name: str,
|
||||
) -> tuple[Instrument, ...]:
|
||||
"""
|
||||
Получить Instrument Feed из Registry и загрузить справочник инструментов.
|
||||
|
||||
Service не создаёт Feed, не выполняет transport, parsing, validation,
|
||||
mapping, retry, кэширование или преобразование результата.
|
||||
"""
|
||||
|
||||
feed = self._registry.get(source_name)
|
||||
|
||||
return feed.load_instruments()
|
||||
|
||||
|
||||
# Application-level сервис получения текущих котировок.
|
||||
class QuoteAcquisitionService:
|
||||
def __init__(
|
||||
self,
|
||||
@@ -49,14 +42,33 @@ class QuoteAcquisitionService:
|
||||
source_name: str,
|
||||
symbol: str,
|
||||
) -> Quote:
|
||||
"""
|
||||
Получить Quotes Feed из Registry и загрузить текущую котировку.
|
||||
|
||||
Service не создаёт Feed, не выполняет transport, parsing, validation,
|
||||
mapping, нормализацию symbol, retry, кэширование или преобразование
|
||||
результата.
|
||||
"""
|
||||
|
||||
feed = self._registry.get(source_name)
|
||||
|
||||
return feed.load_quote(symbol)
|
||||
|
||||
|
||||
class CandlesAcquisitionService:
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
registry: CandlesFeedRegistry,
|
||||
) -> None:
|
||||
self._registry = registry
|
||||
|
||||
def load_candles(
|
||||
self,
|
||||
source_name: str,
|
||||
symbol: str,
|
||||
*,
|
||||
interval: str,
|
||||
limit: int,
|
||||
price_type: str,
|
||||
) -> tuple[Candle, ...]:
|
||||
feed = self._registry.get(source_name)
|
||||
|
||||
return feed.load_candles(
|
||||
symbol,
|
||||
interval=interval,
|
||||
limit=limit,
|
||||
price_type=price_type,
|
||||
)
|
||||
Reference in New Issue
Block a user