diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-04-29 03:52:02 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-04-29 17:48:48 +0300 |
| commit | 4558f9130fcb2b9de773f2a6d053327ca0901a39 (patch) | |
| tree | 0df34d0d123d890d37d12f8394668fd71d5d5b8e /src | |
| parent | 972c50e10e3727d697457299ae71918c1f444af5 (diff) | |
db_op: DBO_rzdb__init_DB()
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/db_op.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server/db_op.py b/src/server/db_op.py index aa0046a0..4634fbbd 100644 --- a/src/server/db_op.py +++ b/src/server/db_op.py @@ -739,6 +739,42 @@ class DBO_rzdb__fetch_DB_metablock(DB_op): return None return ret.pop() +class DBO_rzdb__init_DB(DB_composed_op): + + class _init_DB_subop(DB_op): + + def __init__(self, length_lim=None): + super(DBO_rzdb__init_DB. _init_DB_subop, self).__init__() + + # init DB metadata node + q_arr = ['create (n:%s {db_attr})' % (neo4j_schema.META_LABEL__RZDB_META)] + q_params = {'db_attr': {'schema_version': '0.1'}} + self.add_statement(q_arr, q_params) + + def __init__(self, rz_config): + """ + Fetch DB metadata + """ + super(DBO_rzdb__init_DB, self).__init__() + + # probe for an existing metablock, fail if found via post_sub_op_exec_hook() + self.add_sub_op(DBO_rzdb__fetch_DB_metablock()) + + # init DB metadata node + self.add_sub_op(DBO_rzdb__init_DB._init_DB_subop()) + + # create mainpage + mainpage_rzdoc = RZDoc(rz_config.rzdoc__mainpage_name) + mainpage_rzdoc.id = 'a000a000' + self.add_sub_op(DBO_rzdoc__create(mainpage_rzdoc)) + self.add_sub_op(DBO_block_chain__init(mainpage_rzdoc)) + + def post_sub_op_exec_hook(self, prv_sub_op, prv_sub_op_ret): + + if isinstance(prv_sub_op, DBO_rzdb__fetch_DB_metablock) and prv_sub_op_ret is not None: + raise Exception('DB contains metadata, aborting initialization of pre-initialized DB') + + class DBO_rzdoc__clone(DB_op): def __init__(self, limit=16384): |
