You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
"""Attention-related Oracle service methods."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import datetime as dt
|
|
|
|
from libs.oracle_client.client import OracleClient
|
|
from libs.oracle_client.models import (
|
|
CollectionStatusResponse,
|
|
EntityResolveResponse,
|
|
EventAttentionResponse,
|
|
)
|
|
|
|
|
|
def _date_to_iso(event_date: str | dt.date) -> str:
|
|
if isinstance(event_date, dt.date):
|
|
return event_date.isoformat()
|
|
return event_date
|
|
|
|
|
|
class AttentionService:
|
|
def __init__(self, client: OracleClient) -> None:
|
|
self._client = client
|
|
|
|
async def get_entity(self, ticker: str) -> EntityResolveResponse:
|
|
data = await self._client.get(f"/api/v1/attention/entity/{ticker}")
|
|
return EntityResolveResponse.model_validate(data)
|
|
|
|
async def resolve_entity(self, ticker: str) -> EntityResolveResponse:
|
|
data = await self._client.post(f"/api/v1/attention/admin/resolve/{ticker}")
|
|
return EntityResolveResponse.model_validate(data)
|
|
|
|
async def get_event_attention(
|
|
self,
|
|
ticker: str,
|
|
event_date: str | dt.date,
|
|
) -> EventAttentionResponse:
|
|
data = await self._client.get(
|
|
f"/api/v1/attention/event/{ticker}",
|
|
params={"event_date": _date_to_iso(event_date)},
|
|
)
|
|
return EventAttentionResponse.model_validate(data)
|
|
|
|
async def collect_wiki(
|
|
self,
|
|
ticker: str,
|
|
event_date: str | dt.date,
|
|
) -> CollectionStatusResponse:
|
|
data = await self._client.post(
|
|
f"/api/v1/attention/admin/collect/wiki/{ticker}",
|
|
params={"event_date": _date_to_iso(event_date)},
|
|
)
|
|
return CollectionStatusResponse.model_validate(data)
|
|
|
|
async def collect_gdelt(
|
|
self,
|
|
ticker: str,
|
|
event_date: str | dt.date,
|
|
) -> CollectionStatusResponse:
|
|
data = await self._client.post(
|
|
f"/api/v1/attention/admin/collect/gdelt/{ticker}",
|
|
params={"event_date": _date_to_iso(event_date)},
|
|
)
|
|
return CollectionStatusResponse.model_validate(data)
|