示例#1
0
async def share_subject(subject_id: str, token: str):
    security_payload = validate_jwt(token)
    user = get_user(security_payload["sub"])
    if user is None:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
    subject = load_console_subject_by_id(subject_id)
    return {"subject": subject}
async def save_report(subject_id: str, report: Report, current_user: User = Depends(deps.get_current_user)):
    report.reportId = get_surrogate_key()
    # report.subjectId = subject_id
    new_report = create_report(report)
    subject = load_console_subject_by_id(subject_id)
    subject.reportIds.append(report.reportId)
    update_console_subject(subject)
    return new_report
示例#3
0
async def get_factor_value_by_topic_name_and_condition(
        query_subject: QuerySubjectRequest):
    console_subject = load_console_subject_by_id(query_subject.subjectId)
    subject_filter = __build_subject_filter(query_subject.conditions,
                                            console_subject)
    factor_name = __get_factor_name_by_alias(query_subject.columnName,
                                             console_subject)
    return get_factor_value_by_subject_and_condition(console_subject,
                                                     factor_name,
                                                     subject_filter)
async def save_report(subject_id: str,
                      report: Report,
                      current_user: User = Depends(deps.get_current_user)):
    report = add_tenant_id_to_model(report, current_user)
    report.reportId = get_surrogate_key()
    new_report = create_report(report)
    subject = load_console_subject_by_id(subject_id, current_user)
    subject.reportIds.append(new_report.reportId)
    update_console_subject(subject)
    return new_report
async def get_factor_value_by_topic_name_and_condition(
    query_subject: QuerySubjectRequest,
    current_user: User = Depends(deps.get_current_user)):
    console_subject = load_console_subject_by_id(query_subject.subjectId,
                                                 current_user)
    subject_filter = __build_subject_filter(query_subject.conditions,
                                            console_subject)
    factor_name_list = __get_factor_name_by_alias(query_subject.columnNames,
                                                  console_subject)
    return get_factor_value_by_subject_and_condition(console_subject,
                                                     factor_name_list,
                                                     subject_filter,
                                                     current_user)
async def load_dataset_by_subject_id(subject_id, pagination: Pagination,
                                     current_user):
    console_subject = load_console_subject_by_id(subject_id, current_user)
    query_monitor: QueryMonitor = build_query_monitor(console_subject,
                                                      query_type="dataset")
    try:
        # build query condition
        start = time.time()
        count_query = build_count_query_for_subject(console_subject,
                                                    current_user)
        count_sql = count_query.get_sql()
        query_count_summary = build_query_summary(count_sql)
        conn = get_connection()
        cur = conn.cursor()
        log.info("sql count:{0}".format(count_sql))
        cur.execute(count_sql)
        count_rows = cur.fetchone()
        log.info("sql result: {0}".format(count_rows))
        query_count_summary.resultSummary = build_result_summary(
            count_rows, start)
        query_monitor.querySummaryList.append(query_count_summary)

        query_start = time.time()
        query = build_query_for_subject(console_subject, current_user)
        # query_sql = build_page_by_row_number(pagination, query)
        query_sql = build_pagination(query.get_sql(), pagination)
        query_summary = build_query_summary(query_sql)
        log.info("sql:{0}".format(query_sql))
        print(query_sql)
        cur = conn.cursor()
        cur.execute(query_sql)
        rows = cur.fetchall()
        log.debug("sql result: {0}".format(rows))
        query_summary.resultSummary = build_result_summary(rows, query_start)
        query_monitor.querySummaryList.append(query_summary)
        query_monitor.executionTime = time.time() - start
        return rows, count_rows[0]
    except Exception as e:
        log.exception(e)
        query_monitor.error = traceback.format_exc()
        query_monitor.success = False
    finally:
        await save_query_monitor_data(query_monitor)
示例#7
0
def load_dataset_by_subject_id(subject_id, pagination: Pagination):
    ##TODO report monitor
    console_subject = load_console_subject_by_id(subject_id)
    query = build_query_for_subject(console_subject)
    count_query = build_count_query_for_subject(console_subject)
    conn = get_connection()
    cur = conn.cursor()
    count_sql = count_query.get_sql()
    log.info("sql count:{0}".format(count_sql))
    cur.execute(count_sql)
    count_rows = cur.fetchone()
    log.info("sql result: {0}".format(count_rows))

    query_sql = query.get_sql() + " " + build_pagination(pagination)
    log.info("sql:{0}".format(query_sql))
    cur = conn.cursor()
    cur.execute(query_sql)
    rows = cur.fetchall()
    log.debug("sql result: {0}".format(rows))
    return rows, count_rows[0]
示例#8
0
def copy_template_to_console_space(template_ids, console_space: ConsoleSpace,
                                   current_user):
    if template_ids:
        for template_id in template_ids.split(","):
            template_space = load_console_space_by_id(template_id,
                                                      current_user)
            for subject_id in template_space.subjectIds:
                subject: ConsoleSpaceSubject = load_console_subject_by_id(
                    subject_id, current_user)
                subject.subjectId = None
                subject = add_tenant_id_to_model(subject, current_user)
                new_report_ids = []
                for report_id in subject.reportIds:
                    report: Report = load_report_by_id(report_id, current_user)
                    report = add_tenant_id_to_model(report, current_user)
                    report = create_report(report)
                    subject.reports.append(report)
                    new_report_ids.append(report.reportId)
                subject.reportIds = new_report_ids
                subject = create_console_subject_to_storage(subject)
                console_space.subjectIds.append(subject.subjectId)
                console_space.subjects.append(subject)

    return console_space
示例#9
0
async def import_console_subject(subject: ConsoleSpaceSubject):
    result = load_console_subject_by_id(subject.subjectId)
    if result is None:
        import_console_subject_to_db(subject)
    else:
        update_console_subject(subject)