From 0df1aaf19a5f245d58079806cc41ade508a33aac Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 18 Oct 2019 10:49:28 +0300 Subject: Revert "Change: refer to resource by name, not id" This reverts commit 03a559309b8790f6bc3ad3d92300a4c172910abb. --- ick2/persistent.py | 82 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 25 deletions(-) (limited to 'ick2/persistent.py') diff --git a/ick2/persistent.py b/ick2/persistent.py index e225b88..d323db7 100644 --- a/ick2/persistent.py +++ b/ick2/persistent.py @@ -27,28 +27,28 @@ import ick2 class PersistentStateInterface: # pragma: no cover - def get_resource_names(self, token, kind): + def get_resource_ids(self, token, kind): raise NotImplementedError() - def has_resource(self, token, kind, name): + def has_resource(self, token, kind, rid): raise NotImplementedError() - def get_resource(self, token, kind, name): + def get_resource(self, token, kind, rid): raise NotImplementedError() def get_resources(self, token, kind): return [ - self.get_resource(token, kind, name) - for name in self.get_resource_names(token, kind) + self.get_resource(token, kind, rid) + for rid in self.get_resource_ids(token, kind) ] - def write_resource(self, token, kind, name, resource): + def write_resource(self, token, kind, rid, resource): raise NotImplementedError() - def update_resource(self, token, kind, name, resource): + def update_resource(self, token, kind, rid, resource): raise NotImplementedError() - def remove_resource(self, token, kind, name): + def remove_resource(self, token, kind, rid): raise NotImplementedError() @@ -57,39 +57,71 @@ class MemoryPersistentState(PersistentStateInterface): def __init__(self): self._res = {} - def get_resource_names(self, token, kind): + def get_resource_ids(self, token, kind): if kind not in self._res: return [] return list(self._res[kind].keys()) - def has_resource(self, token, kind, name): - return kind in self._res and name in self._res[kind] + def has_resource(self, token, kind, rid): + return kind in self._res and rid in self._res[kind] - def get_resource(self, token, kind, name): - if kind not in self._res or name not in self._res[kind]: - raise ick2.NotFound(kind=kind, name=name) - return self._res[kind][name] + def get_resource(self, token, 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, token, kind, name, resource): + def write_resource(self, token, kind, rid, resource): if kind not in self._res: self._res[kind] = {} - self._res[kind][name] = resource + self._res[kind][rid] = resource - def update_resource(self, token, kind, name, resource): - self.write_resource(token, kind, name, resource) + def update_resource(self, token, kind, rid, resource): + self.write_resource(token, kind, rid, resource) - def remove_resource(self, token, kind, name): - if kind not in self._res or name not in self._res[kind]: - raise ick2.NotFound(kind=kind, name=name) - del self._res[kind][name] + def remove_resource(self, token, 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 MuckPersistentState(PersistentStateInterface): + + def __init__(self): + self._res = {} + + def get_resource_ids(self, token, kind): + if kind not in self._res: + return [] + return list(self._res[kind].keys()) + + def has_resource(self, token, kind, rid): + return kind in self._res and rid in self._res[kind] + + def get_resource(self, token, 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, token, kind, rid, resource): + if kind not in self._res: + self._res[kind] = {} + self._res[kind][rid] = resource + + def update_resource(self, token, kind, rid, resource): + self.write_resource(token, kind, rid, resource) + + def remove_resource(self, token, 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, name): + def __init__(self, kind, rid): super().__init__( 'Resource {}:{} not found'.format( - kind or "unknown", name or "unknown")) + kind or "unknown", rid or "unknown")) class Resource: # pragma: no cover -- cgit v1.2.1