diff options
Diffstat (limited to 'ick2/persistent.py')
-rw-r--r-- | ick2/persistent.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ick2/persistent.py b/ick2/persistent.py index bb0aeb6..31473ba 100644 --- a/ick2/persistent.py +++ b/ick2/persistent.py @@ -78,6 +78,35 @@ class MemoryPersistentState(PersistentStateInterface): del self._res[kind][rid] +class MuckPersistentState(PersistentStateInterface): + + def __init__(self): + self._res = {} + + def get_resource_ids(self, kind): + if kind not in self._res: + return [] + return list(self._res[kind].keys()) + + def has_resource(self, kind, rid): + return kind in self._res and rid in self._res[kind] + + def get_resource(self, kind, rid): + if kind not in self._res or rid not in self._res[kind]: + raise ick2.NotFound(kind=kind, rid=rid) + return self._res[kind][rid] + + def write_resource(self, kind, rid, resource): + if kind not in self._res: + self._res[kind] = {} + self._res[kind][rid] = resource + + def remove_resource(self, kind, rid): + if kind not in self._res or rid not in self._res[kind]: + raise ick2.NotFound(kind=kind, rid=rid) + del self._res[kind][rid] + + class NotFound(Exception): def __init__(self, kind, rid): |