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