예제 #1
0
def insert():
    request_data = form.check(["pid", "name"])
    pid = request_data["pid"]
    name = request_data["name"]

    insert_result = mymysql.execute(
        """
            insert into designer_data_directory(pid, name) values (%(pid)s, %(name)s)
        """, {
            "pid": pid,
            "name": name,
        })

    json.dumps(
        mymysql.execute(
            """
                CREATE TABLE designer_data_data_%(id)s (
                    id int(11) NOT NULL AUTO_INCREMENT,
                    update_datetime timestamp not null default current_timestamp on update current_timestamp,
                    create_datetime timestamp not null default current_timestamp,
                    PRIMARY KEY (id)
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
        """, {
                "id": insert_result,
            }))

    return json.dumps(insert_result)
예제 #2
0
def update():
    request_data = form.check(["id"])

    params = {}
    update_set_sql_str = ""

    params["id"] = request_data["id"]

    if request_data.__contains__("name"):
        params["name"] = request_data["name"]
        update_set_sql_str = "name=%(name)s, "

    if request_data.__contains__("pid"):
        params["pid"] = request_data["pid"]
        update_set_sql_str = "pid=%(pid)s, "

    if request_data.__contains__("description"):
        params["description"] = request_data["description"]
        update_set_sql_str = "description=%(description)s, "

    if "" == update_set_sql_str:
        raise MyServiceException("no content for update set")

    update_set_sql_str = update_set_sql_str[:len(update_set_sql_str) - 2]

    return json.dumps(
        mymysql.execute("update designer_data_directory set " + update_set_sql_str + " where id = %(id)s", params))
예제 #3
0
파일: data.py 프로젝트: laashub/laas-soa
def insert():
    """
    执行业务, 向执行队列中添加一个执行任务
    :return:
    """
    request_data = form.check(['business_id', "data_id", "data_data_id"])  # 校验是否传入 业务id, 数据模型数据id
    business_id = request_data["business_id"]
    data_id = request_data["data_id"]
    data_data_id = request_data["data_data_id"]
    data_data_data = context.select_data_by_data_id__data_data_id(data_id, data_data_id)[0]
    # 持久化到数据库中
    business_name = business_id_2_name[business_id]
    # 执行器数据id, 后续包含: 执行日志、执行状态 等等
    executor_data_id = mymysql.execute("""
            insert into executor_data(business_id, business_name, data_id,
             data_data_id,data_data_data,create_by) 
             values (%(business_id)s, %(business_name)s, %(data_id)s,%(data_data_id)s,%(data_data_data)s,%(create_by)s )
        """, {
        "business_id": business_id,
        "business_name": business_name,
        "data_id": data_id,
        "data_data_id": data_data_id,
        "data_data_data": dumps(data_data_data),
        "create_by": 'tristan',
    })
    context.log(
        "执行器启动中: data_id: %s data_data_id: %s data_data_data: %s" % (data_id, data_data_id, str(data_data_data)),
        executor_data_id)
    threading.Thread(target=business_hardcode_pool[business_id],
                     args=(executor_data_id, data_data_data,)).start()
    context.log("执行器已启动", executor_data_id)
    return json.dumps({
        "executor_data_id": executor_data_id
    })
예제 #4
0
def select():
    request_data = form.check()
    select_sql_keys = "id, pid, name"
    select_sql_keys += """
    ,(select group_concat(reference_type)
        from designer_data_struct dds
        where ddd.id = dds.did
          and dds.reference_type
          and dds.reference_type != '') reference_types
    """
    select_sql_where = ''
    params = {}
    if request_data.__contains__('id'):
        select_sql_keys += ', description'
        select_sql_where = " and id = %(id)s "
        params['id'] = request_data["id"]
    # 是否查询关联数据模型

    # 是否开放数据
    is_open_data = False
    if request_data.__contains__('is_open_data'):
        is_open_data = request_data["is_open_data"]
    if is_open_data:
        select_sql_where += "  and exists(select 1 from designer_data_struct dds where dds.did = ddd.id and dds.is_open_data = 1)"

    select_sql = 'select ' + select_sql_keys + ' from designer_data_directory ddd where 1 = 1 ' + select_sql_where
    return json.dumps(mymysql.execute(select_sql, params))
예제 #5
0
def delete():
    request_data = form.check(["id"])

    def get_children(_id):
        return mymysql.execute(
            """
            select id
            from designer_logic_directory
            where pid = %(id)s
            """, {"id": _id})

    def delete_one_level(_id):
        # delete logic data
        mymysql.execute(
            """
                    delete from designer_logic_data where did = %(did)s
                    """, {"did": _id})

        return mymysql.execute(
            """
            delete
            from designer_logic_directory
            where id = %(id)s
            """, {"id": _id})

    def do_delete(_id):
        children = get_children(_id)
        if len(children) > 0:
            for item in children:
                do_delete(item["id"])
        delete_one_level(_id)

    do_delete(request_data["id"])
    return ""
예제 #6
0
def consume_business():
    result = []
    request_data = form.check(["business_type_list"])
    business_type_list = request_data["business_type_list"]
    consume_business_lock.acquire()

    def check(business_type):
        if business_type not in business_pool:
            return False
        if len(business_pool[business_type]) < 1:
            return False
        return True

    if business_type_list and len(business_type_list) > 0:
        for business_type in business_type_list:
            if not check(business_type):
                continue

            # 删除业务记录
            business_id = business_pool[business_type].pop()
            # 取出业务数据
            business_data = business_data_pool[business_type].pop(business_id)

            # 修改业务执行状态为已消费
            if business_type not in business_execute_status_pool:
                business_execute_status_pool[business_type] = {}
            business_execute_status_pool[business_type][business_id] = "CONSUMED"
            result.append({
                "business_type": business_type,
                "business_data": business_data
            })
    consume_business_lock.release()
    return json.dumps({"business_type_list": result})
예제 #7
0
def update():
    request_data = form.check([
        "did", "code", "meaning", "reference_type", "is_open_data",
        "data_type", "default_value"
    ])
    old_code = request_data['code']
    code = request_data['code']
    data_type = request_data['data_type']
    if request_data.__contains__("old_code"):
        old_code = request_data['old_code']
    # update column to data data
    column_type = "VARCHAR(255)"
    if data_type == "file_string":
        column_type = "mediumtext"
    mymysql.execute(
        'ALTER TABLE designer_data_data_%(did)s change ' + old_code + ' ' +
        code + ' ' + column_type + ' DEFAULT NULL COMMENT %(meaning)s;',
        request_data)
    return json.dumps(
        mymysql.execute(
            """
                update designer_data_struct 
                set code = %(code)s 
                    ,meaning = %(meaning)s 
                    ,reference_type = %(reference_type)s 
                    ,is_open_data = %(is_open_data)s
                    ,data_type = %(data_type)s
                    ,default_value = %(default_value)s
                where id = %(id)s
    """, request_data))
예제 #8
0
def delete():
    request_data = form.check(['did', 'id'])
    did = request_data['did']
    designer_data_data_table_name = 'designer_data_data_' + str(did)

    return json.dumps(mymysql.execute(
        'delete from ' + designer_data_data_table_name + ' where id = %(id)s ',
        request_data))
예제 #9
0
파일: data.py 프로젝트: ghl1024/laas-soa
def select():
    request_data = form.check(["did"])
    return json.dumps(
        mymysql.execute(
            """
        select id, file
        from designer_logic_data
        where did = %(did)s
    """, request_data))
예제 #10
0
파일: struct.py 프로젝트: laashub/laas-soa
def select():
    request_data = form.check(["did"])
    return json.dumps(
        mymysql.execute(
            """
                select id, code, meaning, reference_type
                from designer_data_struct
                where did = %(did)s
    """, request_data))
예제 #11
0
def select():
    request_data = form.check()
    select_sql_keys = "id, pid, name"
    select_sql_where = ''
    params = {}
    if request_data.__contains__('id'):
        select_sql_keys += ', description'
        select_sql_where = " and id = %(id)s "
        params['id'] = request_data["id"]
    select_sql = 'select ' + select_sql_keys + ' from designer_data_directory where 1 = 1 ' + select_sql_where
    return json.dumps(mymysql.execute(select_sql, params))
예제 #12
0
파일: data.py 프로젝트: ghl1024/laas-soa
def update():
    request_data = form.check(["id", "file"])
    update_designer_data_logic_associate(request_data['id'],
                                         request_data['file'])
    return json.dumps(
        mymysql.execute(
            """
        update designer_logic_data
        set file = %(file)s
        where id = %(id)s
    """, request_data))
예제 #13
0
파일: struct.py 프로젝트: laashub/laas-soa
def delete():
    request_data = form.check(["id"])
    code = request_data['code']
    # delete column to data data
    mymysql.execute('ALTER TABLE designer_data_data_%(did)s drop ' + code,
                    request_data)

    return json.dumps(
        mymysql.execute(
            """
                delete from designer_data_struct
                where id = %(id)s
    """, request_data))
예제 #14
0
파일: struct.py 프로젝트: laashub/laas-soa
def update():
    request_data = form.check(["did", "code", "meaning", "reference_type"])
    code = request_data['code']
    # update column to data data
    mymysql.execute(
        'ALTER TABLE designer_data_data_%(did)s change ' + code + ' ' + code +
        ' VARCHAR(255) DEFAULT NULL COMMENT %(meaning)s;', request_data)
    return json.dumps(
        mymysql.execute(
            """
                update designer_data_struct 
                set code = %(code)s ,meaning = %(meaning)s
                where id = %(id)s
    """, request_data))
예제 #15
0
파일: struct.py 프로젝트: laashub/laas-soa
def insert():
    request_data = form.check(["did", "code", "meaning", "reference_type"])
    code = request_data['code']
    # insert column to data data
    mymysql.execute(
        'ALTER TABLE designer_data_data_%(did)s ADD COLUMN ' + code +
        ' VARCHAR(255) DEFAULT NULL COMMENT %(meaning)s;', request_data)

    return json.dumps(
        mymysql.execute(
            """
                insert into designer_data_struct(did, code, meaning, reference_type ) 
                values (%(did)s, %(code)s, %(meaning)s, %(reference_type)s)
    """, request_data))
예제 #16
0
def insert_business():
    request_data = form.check(["business_type", "business_data"])
    business_type = request_data["business_type"]
    business_data = request_data["business_data"]

    business_id = int(time.time_ns())

    # 将业务插入业务池中
    if business_type not in business_pool:
        business_pool[business_type] = []
    business_pool[business_type].append(business_id)
    # 将业务数据插入业务数据池中
    if business_type not in business_data_pool:
        business_data_pool[business_type] = {}
    business_data_pool[business_type][business_id] = business_data

    return json.dumps({"status": "SUCCESS"})
예제 #17
0
def update():
    request_data = form.check(['did', 'id'])
    did = request_data['did']
    designer_data_data_table_name = 'designer_data_data_' + str(did)
    update_sql = ''
    # got the data table' column
    data_struct_list = json.loads(struct.select())
    for item in data_struct_list:
        data_data_table_column = item['code']
        if 'id' == data_data_table_column:
            continue
        if request_data.__contains__(data_data_table_column):
            update_sql += data_data_table_column + ' = ' + '%(' + data_data_table_column + ')s, '
    update_sql = update_sql[:len(update_sql) - 2]

    return json.dumps(mymysql.execute(
        'update ' + designer_data_data_table_name + ' set ' + update_sql + ' where id = %(id)s ',
        request_data))
예제 #18
0
def insert():
    request_data = form.check(['did'])
    did = request_data['did']
    designer_data_data_table_name = 'designer_data_data_' + str(did)
    insert_sql_keys = ''
    insert_sql_values = ''
    # got the data table' column
    data_struct_list = json.loads(struct.select())
    for item in data_struct_list:
        data_data_table_column = item['code']
        if request_data.__contains__(data_data_table_column):
            insert_sql_keys += data_data_table_column + ', '
            insert_sql_values += '%(' + data_data_table_column + ')s, '
    insert_sql_keys = insert_sql_keys[:len(insert_sql_keys) - 2]
    insert_sql_values = insert_sql_values[:len(insert_sql_values) - 2]

    return json.dumps(mymysql.execute(
        'insert into ' + designer_data_data_table_name + '(' + insert_sql_keys + ') values(' + insert_sql_values + ')',
        json.loads(json.dumps(request_data))))
예제 #19
0
def insert():
    request_data = form.check(
        ["did", "code", "meaning", "reference_type", "data_type"])
    code = request_data['code']
    data_type = request_data['data_type']
    # insert column to data data
    column_type = "VARCHAR(255)"
    if data_type == "file_string":
        column_type = "mediumtext"
    mymysql.execute(
        'ALTER TABLE designer_data_data_%(did)s ADD COLUMN ' + code + ' ' +
        column_type + ' DEFAULT NULL COMMENT %(meaning)s;', request_data)

    return json.dumps(
        mymysql.execute(
            """
                insert into designer_data_struct(did, code, meaning, reference_type
                , is_open_data, data_type, default_value) 
                values (%(did)s, %(code)s, %(meaning)s, %(reference_type)s
                , %(is_open_data)s, %(data_type)s, %(default_value)s)
    """, request_data))
예제 #20
0
def delete():
    request_data = form.check(["id"])
    # 删除该数据模型的模型结构字段
    mymysql.execute(
        """
            delete from designer_data_struct
            where did = %(id)s
            """, request_data)

    def get_children(_id):
        return mymysql.execute(
            """
            select id
            from designer_data_directory
            where pid = %(id)s
            """, {"id": _id})

    def delete_one_level(_id):
        # drop table designer_data_data_
        mymysql.execute(
            """
                    drop table designer_data_data_%(id)s
                    """, {"id": _id})
        return mymysql.execute(
            """
            delete
            from designer_data_directory
            where id = %(id)s
            """, {"id": _id})

    def do_delete(_id):
        children = get_children(_id)
        if len(children) > 0:
            for item in children:
                do_delete(item["id"])
        delete_one_level(_id)

    do_delete(request_data["id"])

    return ""
예제 #21
0
def insert():
    request_data = form.check(["pid", "name"])
    pid = request_data["pid"]
    name = request_data["name"]

    insert_result = mymysql.execute(
        """
        insert into designer_logic_directory(pid, name) values (%(pid)s, %(name)s)
    """, {
            "pid": pid,
            "name": name,
        })

    # insert logic_data
    mymysql.execute(
        """
            insert into designer_logic_data(did, file) values (%(did)s, %(file)s)
        """, {
            "did": insert_result,
            "file": '',
        })

    return json.dumps(insert_result)
예제 #22
0
def select():
    request_data = form.check(['search'])
    is_open_data = False
    if request_data.__contains__('is_open_data'):
        is_open_data = request_data["is_open_data"]
    search = request_data['search']
    did = search['did']
    if request_data.__contains__('page_current'):
        page_current = request_data['page_current']
        if page_current < 1:
            page_current = 1
    else:
        page_current = 1
    if request_data.__contains__('page_size'):
        page_size = request_data['page_size']
    else:
        page_size = 10
    if request_data.__contains__('search'):
        search = request_data['search']
    else:
        search = {}
    if request_data.__contains__('order'):
        order = request_data['order']
    else:
        order = []

    designer_data_data_table_name = 'designer_data_data_' + str(did)
    select_value = {}
    # where
    select_sql_where = ''
    for item in search:
        select_value[item] = search[item]
        if 'did' == item:
            continue
        r"/"
        select_sql_where += ' and ' + item + ' like %(' + item + ')s'
        select_value[item] = '%' + str(search[item]) + '%'

    # page
    page_total = mymysql.execute(
        'select count(1) as page_total from ' + designer_data_data_table_name + ' where 1 = 1 ' + select_sql_where,
        select_value)
    page_total = page_total[0]['page_total']
    select_sql_page = " LIMIT " + str(((page_current - 1) * page_size)) + ", " + str(page_size)

    select_sql_keys = 'id, '
    # got the data table' column
    data_struct_list = mymysql.execute('select code from designer_data_struct where did = %(did)s', {'did': did})
    for item in data_struct_list:
        data_data_table_column = item['code']
        select_sql_keys += data_data_table_column + ', '
    select_sql_keys = select_sql_keys[:len(select_sql_keys) - 2]

    # data
    select_sql = 'select ' + select_sql_keys + ' from ' + designer_data_data_table_name + ' where 1 = 1 ' \
                 + select_sql_where + select_sql_page
    data = mymysql.execute(select_sql, select_value)

    # 查寻开放数据列
    if is_open_data:
        open_data_codes = mymysql.execute("""
            select id, code, is_open_data from designer_data_struct where did = %s
            """ % did)
        allow_code_list = []
        open_data_code_obj = {}
        for item in open_data_codes:
            open_data_code_obj[item["code"]] = item
            if item["is_open_data"] == 1:
                allow_code_list.append(item["code"])
        # 替换列表中开放数据列为引用key
        for data_item in data:
            for data_item_key in data_item:
                if data_item_key in allow_code_list or data_item_key == "id":
                    continue
                data_item[data_item_key] = "SOA数据引用key: %s__%s__%s" % (
                    did, data_item["id"], (open_data_code_obj[data_item_key])["id"])
    return json.dumps({
        'page_total': page_total,
        'data': data,
        'page_current': page_current,
        'page_size': page_size,
        'search': search,
        'order': order,
    })
예제 #23
0
def select():
    request_data = form.check(['search'])
    search = request_data['search']
    did = search['did']
    if request_data.__contains__('page_current'):
        page_current = request_data['page_current']
        if page_current < 1:
            page_current = 1
    else:
        page_current = 1
    if request_data.__contains__('page_size'):
        page_size = request_data['page_size']
    else:
        page_size = 10
    if request_data.__contains__('search'):
        search = request_data['search']
    else:
        search = {}
    if request_data.__contains__('order'):
        order = request_data['order']
    else:
        order = []

    designer_data_data_table_name = 'designer_data_data_' + str(did)
    select_value = {}
    # where
    select_sql_where = ''
    for item in search:
        select_value[item] = search[item]
        if 'did' == item:
            continue
        r"/"
        select_sql_where += ' and ' + item + ' like %(' + item + ')s'
        select_value[item] = '%' + str(search[item]) + '%'

    # page
    page_total = mymysql.execute(
        'select count(1) as page_total from ' + designer_data_data_table_name + ' where 1 = 1 ' + select_sql_where,
        select_value)
    page_total = page_total[0]['page_total']
    select_sql_page = " LIMIT " + str(((page_current - 1) * page_size)) + ", " + str(page_size)

    select_sql_keys = 'id, '
    # got the data table' column
    data_struct_list = mymysql.execute('select code from designer_data_struct where did = %(did)s', {'did': did})
    for item in data_struct_list:
        data_data_table_column = item['code']
        select_sql_keys += data_data_table_column + ', '
    select_sql_keys = select_sql_keys[:len(select_sql_keys) - 2]

    # data
    select_sql = 'select ' + select_sql_keys + ' from ' + designer_data_data_table_name + ' where 1 = 1 ' \
                 + select_sql_where + select_sql_page
    data = mymysql.execute(select_sql, select_value)
    #
    return json.dumps({
        'page_total': page_total,
        'data': data,
        'page_current': page_current,
        'page_size': page_size,
        'search': search,
        'order': order,
    })