from typing import Sequence

from elasticsearch import Elasticsearch
from redis.client import StrictRedis

from .event_common import EventType, uncompress_plot
from .metric_events_iterator import MetricEventsIterator


class MetricPlotsIterator(MetricEventsIterator):
    def __init__(self, redis: StrictRedis, es: Elasticsearch):
        super().__init__(redis, es, EventType.metrics_plot)

    def _get_extra_conditions(self) -> Sequence[dict]:
        return []

    def _get_variant_state_aggs(self):
        return None, None

    def _process_event(self, event: dict) -> dict:
        uncompress_plot(event)
        return event

    def _get_same_variant_events_order(self) -> dict:
        return {"timestamp": {"order": "desc"}}