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()