def update(self, gid, sid, did, scid, tid, fkid=None): """ This function will update the data for the selected foreign key. Args: gid: Server Group ID sid: Server ID did: Database ID scid: Schema ID tid: Table ID fkid: Foreign key constraint ID Returns: """ data = request.form if request.form else json.loads( request.data, encoding='utf-8' ) try: data['schema'] = self.schema data['table'] = self.table sql, name = fkey_utils.get_sql(self.conn, data, tid, fkid) if not isinstance(sql, (str, unicode)): return sql sql = sql.strip('\n').strip(' ') status, res = self.conn.execute_scalar(sql) if not status: return internal_server_error(errormsg=res) sql = render_template( "/".join([self.template_path, 'get_oid.sql']), tid=tid, name=data['name'] ) status, res = self.conn.execute_dict(sql) if not status: return internal_server_error(errormsg=res) if res['rows'][0]["convalidated"]: icon = "icon-foreign_key_no_validate" valid = False else: icon = "icon-foreign_key" valid = True return jsonify( node=self.blueprint.generate_browser_node( fkid, tid, name, icon=icon, valid=valid ) ) except Exception as e: return internal_server_error(errormsg=str(e))
def sql(trans_id, sgid, sid, did): data = json.loads(request.data, encoding='utf-8') helper = ERDHelper(trans_id, sid, did) conn = _get_connection(sid, did, trans_id) sql = '' for tab_key, tab_data in data.get('nodes', {}).items(): sql += '\n\n' + helper.get_table_sql(tab_data) for link_key, link_data in data.get('links', {}).items(): link_sql, name = fkey_utils.get_sql(conn, link_data, None) sql += '\n\n' + link_sql return make_json_response(data=sql, status=200)
def msql(self, gid, sid, did, scid, tid, fkid=None): """ This function returns modified SQL for the selected foreign key. Args: gid: Server Group ID sid: Server ID did: Database ID scid: Schema ID tid: Table ID fkid: Foreign key constraint ID Returns: """ data = {} for k, v in request.args.items(): try: # comments should be taken as is because if user enters a # json comment it is parsed by loads which should not happen if k in ('comment',): data[k] = v else: data[k] = json.loads(v, encoding='utf-8') except ValueError: data[k] = v data['schema'] = self.schema data['table'] = self.table try: sql, name = fkey_utils.get_sql(self.conn, data, tid, fkid) if not isinstance(sql, (str, unicode)): return sql sql = sql.strip('\n').strip(' ') if sql == '': sql = "--modified SQL" return make_json_response( data=sql, status=200 ) except Exception as e: return internal_server_error(errormsg=str(e))
def sql(trans_id, sgid, sid, did): data = json.loads(request.data, encoding='utf-8') helper = ERDHelper(trans_id, sid, did) conn = _get_connection(sid, did, trans_id) sql = '' tab_foreign_keys = [] all_nodes = data.get('nodes', {}) for tab_key, tab_data in all_nodes.items(): tab_fks = tab_data.pop('foreign_key', []) tab_foreign_keys.extend( translate_foreign_keys(tab_fks, tab_data, all_nodes)) sql += '\n\n' + helper.get_table_sql(tab_data) for tab_fk in tab_foreign_keys: fk_sql, name = fkey_utils.get_sql(conn, tab_fk, None) sql += '\n\n' + fk_sql return make_json_response(data=sql, status=200)