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
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)
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]
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
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)