summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-03-30 18:53:33 +0300
committerLV-426 <lv-426@taproot.org.il>2015-04-01 22:25:53 +0300
commitd04878891794b0dd6388b14a97a27ef5f5db81e4 (patch)
treed5412605ce6cd4f89e16c95db26f75ae20c9179d /src/server
parent9b0d7ff1e52cfbfc69d0e27dc898cbeea4573488 (diff)
rz_api_common: cache_lookup__rzdoc(): map name<>rzdoc.id's, currently cache cleansing requires restart
Diffstat (limited to 'src/server')
-rw-r--r--src/server/rz_api_common.py23
-rw-r--r--src/server/rz_server.py3
2 files changed, 23 insertions, 3 deletions
diff --git a/src/server/rz_api_common.py b/src/server/rz_api_common.py
index aac3b527..58a9258e 100644
--- a/src/server/rz_api_common.py
+++ b/src/server/rz_api_common.py
@@ -46,5 +46,24 @@ def validate_obj__attr_diff(attr_diff):
if 'id' == attr_name:
raise Exception('validation error: Attr_Diff: forbidden attribute change: \'id\', n_id: ' + n_id)
-def map_rzdoc_name_to_rzdoc_id(rzdoc_name):
- return rzdoc_name.lower().replace(' ', '_')
+def cache_lookup__rzdoc(rzdoc_name):
+ """
+ lookup RZDoc by rzdoc_name, possibly triggering a DB query
+
+ @raise RZDoc_Exception__not_found
+ """
+ # FIXME: impl cache cleansing logic
+
+ cache_doc = current_app.cache__rzdoc_name_to_rzdoc.get(rzdoc_name)
+ if None != cache_doc:
+ return cache_doc
+
+ kernel = current_app.kernel
+ rz_doc = kernel.rzdoc__lookup_by_name(rzdoc_name)
+
+ if None == rz_doc:
+ raise RZDoc_Exception__not_found(rzdoc_name)
+
+ current_app.cache__rzdoc_name_to_rzdoc[rzdoc_name] = rz_doc
+ return rz_doc
+
diff --git a/src/server/rz_server.py b/src/server/rz_server.py
index 67341c74..c3fa67b0 100644
--- a/src/server/rz_server.py
+++ b/src/server/rz_server.py
@@ -288,7 +288,8 @@ def init_webapp(cfg, kernel, db_ctl=None):
webapp.rz_config = cfg
webapp.kernel = kernel
-
+ webapp.cache__rzdoc_name_to_rzdoc = {}
+
init_rest_interface(cfg, webapp)
return webapp