summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-04-10 19:22:27 +0200
committerAlon Levy <alon@pobox.com>2015-04-10 19:22:27 +0200
commit7d5a73b23570fb7c88e01a1dbb7f7012c49003dd (patch)
tree9b32e62eb0d32980a6b4eb45081eafe5ffd815ed /src/server
parent3d1b371ebf53ec81ca49a430b16f5af343207e67 (diff)
server: implement doc rename
Diffstat (limited to 'src/server')
-rw-r--r--src/server/db_op.py24
-rw-r--r--src/server/rz_kernel.py16
2 files changed, 37 insertions, 3 deletions
diff --git a/src/server/db_op.py b/src/server/db_op.py
index 76a5d2eb..7fa32cca 100644
--- a/src/server/db_op.py
+++ b/src/server/db_op.py
@@ -851,4 +851,28 @@ class DBO_rzdoc__lookup_by_name(DB_op):
rzdoc.id = rzdoc_dict['id']
return rzdoc
+class DBO_rzdoc__rename(DB_op):
+
+ def __init__(self, rzdoc_cur_name, rzdoc_new_name):
+ """
+ @return: [rzdoc] of [] if no doc with the given name was found
+ """
+ super(DBO_rzdoc__rename, self).__init__()
+
+ q_arr = ['match (n:%s {name: {cur_name}}) set n.name = {new_name}' % (neo4j_schema.META_LABEL__RZDOC_TYPE),
+ 'return n']
+
+ param_set = {'cur_name': rzdoc_cur_name, 'new_name': rzdoc_new_name}
+ db_q = DB_Query(q_arr, param_set)
+ self.add_db_query(db_q)
+
+ def process_result_set(self):
+ rzdoc_dict_set = DB_op.process_result_set(self)
+ if not rzdoc_dict_set: return None
+
+ rzdoc_dict = rzdoc_dict_set.pop()
+ rzdoc = RZDoc(rzdoc_name=rzdoc_dict['name'])
+ rzdoc.id = rzdoc_dict['id']
+ return rzdoc
+
diff --git a/src/server/rz_kernel.py b/src/server/rz_kernel.py
index 2debd293..2f35ec2d 100644
--- a/src/server/rz_kernel.py
+++ b/src/server/rz_kernel.py
@@ -6,9 +6,9 @@ import logging
import traceback
from concurrent.futures import ThreadPoolExecutor
-from db_op import DBO_diff_commit__attr, DBO_block_chain__commit, DBO_rzdoc__create, \
- DBO_rzdoc__lookup_by_name, DBO_rzdoc__clone, DBO_rzdoc__delete, DBO_rzdoc__list, \
- DBO_block_chain__init
+from db_op import (DBO_diff_commit__attr, DBO_block_chain__commit, DBO_rzdoc__create,
+ DBO_rzdoc__lookup_by_name, DBO_rzdoc__clone, DBO_rzdoc__delete, DBO_rzdoc__list,
+ DBO_block_chain__init, DBO_rzdoc__rename)
from db_op import DBO_diff_commit__topo
from model.graph import Topo_Diff
from model.model import RZDoc
@@ -297,6 +297,16 @@ class RZ_Kernel(object):
# - clear cache mapping entry
# - unsubscribe all rzdoc readers
+ def rzdoc__rename(self, cur_name, new_name):
+ op = DBO_rzdoc__rename(cur_name, new_name)
+
+ rzdoc = self.db_ctl.exec_op(op)
+ return rzdoc # may be None
+ # FIXME:
+ # - broadcast rename event
+ # - update cache mapping entry
+ # - notify all rzdoc readers
+
def rzdoc__list(self, rzdoc=None, ctx=None):
"""
List available RZDocs