gallery.accords-library.com/server/szurubooru/search/criteria.py

43 lines
1.1 KiB
Python

from typing import Optional, List
from szurubooru.search.typing import SaQuery
class BaseCriterion:
def __init__(self, original_text: str) -> None:
self.original_text = original_text
def __repr__(self) -> str:
return self.original_text
class RangedCriterion(BaseCriterion):
def __init__(
self,
original_text: str,
min_value: Optional[str],
max_value: Optional[str]) -> None:
super().__init__(original_text)
self.min_value = min_value
self.max_value = max_value
def __hash__(self) -> int:
return hash(('range', self.min_value, self.max_value))
class PlainCriterion(BaseCriterion):
def __init__(self, original_text: str, value: str) -> None:
super().__init__(original_text)
self.value = value
def __hash__(self) -> int:
return hash(self.value)
class ArrayCriterion(BaseCriterion):
def __init__(self, original_text: str, values: List[str]) -> None:
super().__init__(original_text)
self.values = values
def __hash__(self) -> int:
return hash(tuple(['array'] + self.values))