def delete_topic(topic_id): con = db.open_con_f() file_path = get_topic_file(topic_id) res = con.execute("DELETE FROM steps WHERE steps_id = ?", [topic_id]) con.commit() if (res.rowcount > 0): os.remove(file_path)
def get_topic_names(): con = db.open_con_f() res = con.execute("SELECT steps_id, steps_name, json_file_name FROM steps") return [{ "topicId": row["steps_id"], "topicName": row["steps_name"], "topicInfo": _get_topic_info(row["json_file_name"]) } for row in res]
def get_params(topic_id): con = db.open_con_f() res = con.execute("SELECT json_file_name FROM steps WHERE steps_id = ?", [topic_id]).fetchone() if res is None: return None steps_json = _get_topic_steps(res["json_file_name"]) run_config = steps_json["run_config"] return humps.camelize(_to_param_list(run_config))
def delete_job(job_id): con = db.open_con_f() con.execute("PRAGMA foreign_keys = ON") schedule_id = con.execute("SELECT schedule_id FROM job WHERE job_id=?", [job_id]).fetchone()["schedule_id"] delete_options_id = con.execute( "SELECT delete_options_id FROM job WHERE job_id=?", [job_id]).fetchone()["delete_options_id"] con.execute("DELETE FROM schedule WHERE schedule_id=?", [schedule_id]) con.execute("DELETE FROM delete_options WHERE delete_options_id=?", [delete_options_id]) con.commit()
def get_logs(): con = db.open_con_f() logs = con.execute( "SELECT " "job_id, job_name, state, error_msg, error_traceback, duration, start_time " "from job_logs INNER JOIN job USING (job_id) " "ORDER BY job_logs_id DESC").fetchall() return [{ "jobId": log["job_id"], "jobName": log["job_name"], "state": log["state"], "errorMsg": log["error_msg"], "errorTraceback": log["error_traceback"], "duration": log["duration"], "startTime": log["start_time"] } for log in logs]
def insert_job(job): con = db.open_con_f() job_name = job["jobName"] schedule = job["schedule"] delete_schedule = job["deleteSchedule"] topic_values = job["topicValues"] schedule_id = _insert_schedule(con, schedule) delete_options_id = _insert_delete_options(con, delete_schedule) job_id = con.execute( "INSERT INTO job(job_name, schedule_id, delete_options_id) " "VALUES(?, ?, ?)", [job_name, schedule_id, delete_options_id]).lastrowid _insert_param_values(con, job_id, topic_values) con.commit()
def get_job_list(): con = db.open_con_f() res = con.execute(""" SELECT job_id, job_name, schedule.type AS s_type, time, STRFTIME('%Y-%m-%d', date) as date, time_interval, next_execution, delete_options.type AS d_type, days, hours, k_count, fix_names_count, GROUP_CONCAT(DISTINCT weekday) AS weekdays, COUNT(DISTINCT position_id) AS topic_count, GROUP_CONCAT(DISTINCT steps.steps_id || ":" || steps_name || ":" || json_file_name || ":" || position) AS topic_positions, GROUP_CONCAT(DISTINCT position || ":" || key || ":" || value || ":" || job_config.type) AS param_values FROM job INNER JOIN schedule USING (schedule_id) LEFT JOIN schedule_weekday USING (schedule_id) INNER JOIN delete_options USING (delete_options_id) INNER JOIN job_topic_position USING (job_id) LEFT JOIN job_config USING (position_id) INNER JOIN steps USING (steps_id) GROUP BY (job_id) """) return [_row_to_job(row) for row in res]
def update_job(job_id, updated_data): con = db.open_con_f() for key, value in updated_data.items(): if key == "jobName": con.execute("UPDATE job SET job_name=? WHERE job_id=?", [value, job_id]) if key == "schedule": old_schedule_id = con.execute( "SELECT schedule_id FROM job WHERE job_id=?", [job_id]).fetchone()["schedule_id"] con.execute("DELETE FROM schedule WHERE schedule_id=?", [old_schedule_id]) con.execute("DELETE FROM schedule_weekday WHERE schedule_id=?", [old_schedule_id]) schedule_id = _insert_schedule(con, value) con.execute("UPDATE job SET schedule_id=? WHERE job_id=?", [schedule_id, job_id]) if key == "deleteSchedule": old_delete_options_id = \ con.execute("SELECT delete_options_id FROM job WHERE job_id=?", [job_id]).fetchone()[ "delete_options_id"] con.execute("DELETE FROM delete_options WHERE delete_options_id=?", [old_delete_options_id]) delete_options_id = _insert_delete_options(con, value) con.execute("UPDATE job SET delete_options_id=? WHERE job_id=?", [delete_options_id, job_id]) if key == "topic_values": pos_id_rows = con.execute( "SELECT position_id FROM job_topic_position WHERE job_id=?", [job_id]) pos_ids = [(row["position_id"], ) for row in pos_id_rows] con.execute("DELETE FROM job_topic_position WHERE job_id=?", [job_id]) con.executemany("DELETE FROM job_config WHERE position_id=?", pos_ids) _insert_param_values(con, job_id, value) con.commit()
def add_topic(name, file_name): con = db.open_con_f() con.execute("INSERT INTO steps (steps_name,json_file_name)VALUES (?, ?)", [name, file_name]) con.commit()
def get_topic_file(topic_id): con = db.open_con_f() res = con.execute("SELECT json_file_name FROM steps WHERE steps_id = ?", [topic_id]).fetchone() return _get_file_path(res["json_file_name"]) if res is not None else None