class IndexParam: def __init__(self, field_name: str, index_type: str, index_name: str, **kwargs): self._field_name = field_name self._index_type = index_type self._index_name = index_name self._kwargs = kwargs @property def field_name(self): return self._field_name @property def index_name(self): return self._index_name @property def index_type(self): return self._index_type def __iter__(self): yield "field_name", self.field_name if self.index_type: yield "index_type", self.index_type yield "index_name", self.index_name yield from self._kwargs.items() def __str__(self): return str(dict(self)) def __eq__(self, other: None): if isinstance(other, self.__class__): return dict(self) == dict(other) if isinstance(other, dict): return dict(self) == other return False class IndexParams: def __init__(self, field_name: str = "", **kwargs): self._indexes = {} if field_name: self.add_index(field_name, **kwargs) def add_index(self, field_name: str, index_type: str = "", index_name: str = "", **kwargs): index_param = IndexParam(field_name, index_type, index_name, **kwargs) pair_key = (field_name, index_name) self._indexes[pair_key] = index_param def __iter__(self): for v in self._indexes.values(): yield dict(v) def __str__(self): return str(list(self))
Memory