clearml-server/apiserver/bll/query/builder.py
2021-01-05 16:28:49 +02:00

37 lines
1002 B
Python

from typing import Optional, Sequence, Iterable, Union
from apiserver.config import config
log = config.logger(__file__)
RANGE_IGNORE_VALUE = -1
class Builder:
@staticmethod
def dates_range(from_date: Union[int, float], to_date: Union[int, float]) -> dict:
return {
"range": {
"timestamp": {
"gte": int(from_date),
"lte": int(to_date),
"format": "epoch_second",
}
}
}
@staticmethod
def terms(field: str, values: Iterable[str]) -> dict:
return {"terms": {field: list(values)}}
@staticmethod
def normalize_range(
range_: Sequence[Union[int, float]],
ignore_value: Union[int, float] = RANGE_IGNORE_VALUE,
) -> Optional[Sequence[Union[int, float]]]:
if not range_ or set(range_) == {ignore_value}:
return None
if len(range_) < 2:
return [range_[0]] * 2
return range_