def _init_schema(self, conn): # check and create missing schema result = yield conn.runQuery(SQL.LIST_SCHEMA, (self.schema,)) if not result: # create ltree extension out('creating %s schema' % self.schema) yield conn.runOperation(SQL.CREATE_SCHEMA % self.schema) defer.returnValue(conn)
def _init_table(self, conn): # check and create missing tables result = yield conn.runQuery(SQL.LIST_TABLE, (self.schema, self.t_object)) if not result: # create object table out('creating object table %s' % self.s_object) yield conn.runOperation(SQL.CREATE_OBJECT_TABLE % self.s_object) result = yield conn.runQuery(SQL.LIST_TABLE, (self.schema, self.t_object)) defer.returnValue(conn)
def _add_constraint_blank(self, c, model, member, constraints): cname = 'almar_check_blank_%s_%s' % ( model.replace('_', '__').replace('.', '_'), member) sql = ('ALTER TABLE %s ADD CONSTRAINT %s' " CHECK (model!='%s'" " OR (model='%s'" " AND (value->E'%s') IS NOT NULL" " AND LENGTH((value->E'%s')) > 0))" % (self.s_object, cname, model, model, member, member)) if cname not in constraints: out('creating blank constraint %s' % cname) yield c.runOperation(sql) defer.returnValue(c)
def _add_constraint_unique(self, c, model, member, indice, flag): uname = 'almar_unique_%s_%s_%s' % ( flag, model.replace('_', '__').replace('.', '_'), member) if flag == 'inherit': sql = ("CREATE UNIQUE INDEX %s ON %s ((value->E'%s'))" " WHERE model <@ %%s" % (uname, self.s_object, member)) else: sql = ("CREATE UNIQUE INDEX %s ON %s ((value->E'%s'))" " WHERE model = %%s" % (uname, self.s_object, member)) if uname not in indice: out('creating unique (%s) index %s' % (flag, uname)) yield c.runOperation(sql, [model]) defer.returnValue(c)
def _init_extension(self, conn): # check and create missing extensions result = yield conn.runQuery(SQL.LIST_EXTENSION, ('ltree',)) if not result: # create ltree extension out('creating ltree extension') yield conn.runOperation(SQL.CREATE_EXTENSION % 'ltree') result = yield conn.runQuery(SQL.LIST_EXTENSION, ('hstore',)) if not result: # create ltree extension out('creating hstore extension') yield conn.runOperation(SQL.CREATE_EXTENSION % 'hstore') defer.returnValue(conn)
def jsonrpc_search(self, query): g = GlobalConfig() result = list() defers = list() for range_, searcher in g.searcher.iteritems(): url = searcher['url'] out('searcher: ' + url) p = RPCProxy(path_join(url, 'op')) defers.append(p.callRemote('search', query)) try: reader_result = yield defer.DeferredList(defers) succeed = filter(lambda x: x[0], reader_result) map(lambda x: result.extend(x[1]), succeed) except Exception as e: raise e defer.returnValue(result)