from .. import udB | |
class KeyManager: | |
def __init__(self, key, cast=None) -> None: | |
self._key = key | |
self._cast = cast | |
def get(self): | |
_data = udB.get_key(self._key) | |
if self._cast and not isinstance(_data, self._cast): | |
return [_data] if self._cast == list else self._cast(_data) | |
return _data or (self._cast() if callable(self._cast) else self._cast) | |
def get_child(self, key): | |
return self.get()[key] | |
def count(self): | |
return len(self.get()) | |
def add(self, item): | |
content = self.get() | |
if content == None and callable(type(item)): | |
content = type(item)() | |
if isinstance(content, dict) and isinstance(item, dict): | |
content.update(item) | |
elif isinstance(content, list) and item not in content: | |
content.append(item) | |
else: | |
return | |
udB.set_key(self._key, content) | |
def remove(self, item): | |
content = self.get() | |
if isinstance(content, list) and item in content: | |
content.remove(item) | |
elif isinstance(content, dict) and content.get(item): | |
del content[item] | |
else: | |
return | |
udB.set_key(self._key, content) | |
def contains(self, item): | |
return item in self.get() | |