From d04878891794b0dd6388b14a97a27ef5f5db81e4 Mon Sep 17 00:00:00 2001 From: LV-426 Date: Mon, 30 Mar 2015 18:53:33 +0300 Subject: rz_api_common: cache_lookup__rzdoc(): map name<>rzdoc.id's, currently cache cleansing requires restart --- src/server/rz_api_common.py | 23 +++++++++++++++++++++-- src/server/rz_server.py | 3 ++- 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'src/server') 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 -- cgit v1.3.1