build 039: complete Quotes Feed migration foundation
This commit is contained in:
62
app/src/market_data/acquisition/service.py
Normal file
62
app/src/market_data/acquisition/service.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# app/src/market_data/acquisition/service.py
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
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 (
|
||||
InstrumentFeedRegistry,
|
||||
QuoteFeedRegistry,
|
||||
)
|
||||
|
||||
|
||||
# Application-level сервис получения справочника инструментов.
|
||||
class InstrumentAcquisitionService:
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
registry: InstrumentFeedRegistry,
|
||||
) -> None:
|
||||
self._registry = registry
|
||||
|
||||
def load_instruments(
|
||||
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,
|
||||
*,
|
||||
registry: QuoteFeedRegistry,
|
||||
) -> None:
|
||||
self._registry = registry
|
||||
|
||||
def load_quote(
|
||||
self,
|
||||
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)
|
||||
Reference in New Issue
Block a user