Esempio n. 1
0
    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))
Esempio n. 2
0
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)
Esempio n. 3
0
    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))
Esempio n. 4
0
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)