package gov.nysenate.openleg.dao.process;
import gov.nysenate.openleg.dao.base.BasicSqlQuery;
import gov.nysenate.openleg.dao.base.SqlTable;
public enum SqlDataProcessLogQuery implements BasicSqlQuery
{
SELECT_DATA_PROCESS_RUN(
"SELECT id, process_start_date_time, process_end_date_time, invoked_by, exceptions\n" +
"FROM ${schema}." + SqlTable.DATA_PROCESS_RUN + "\n" +
"WHERE id = :processId"
),
SELECT_DATA_PROCESS_RUNS_DURING(
"SELECT id, process_start_date_time, process_end_date_time, invoked_by, exceptions, " +
" COUNT(id) OVER () AS total_count\n" +
"FROM ${schema}." + SqlTable.DATA_PROCESS_RUN + "\n" +
"WHERE (process_start_date_time BETWEEN :startDateTime AND :endDateTime)"
),
SELECT_DATA_PROCESS_RUNS_WITH_ACTIVITY(
SELECT_DATA_PROCESS_RUNS_DURING.sql + "\n" +
"AND (id IN (SELECT DISTINCT process_id FROM ${schema}." + SqlTable.DATA_PROCESS_UNIT + ")\n" +
" OR (exceptions IS NOT NULL AND exceptions != '')" +
")"
),
INSERT_DATA_PROCESS_RUN(
"INSERT INTO ${schema}." + SqlTable.DATA_PROCESS_RUN + "\n" +
"(process_start_date_time, process_end_date_time, invoked_by, exceptions)\n" +
"VALUES (:startDateTime, :endDateTime, :invokedBy, :exceptions)\n" +
"RETURNING id"
),
UPDATE_DATA_PROCESS_RUN(
"UPDATE ${schema}." + SqlTable.DATA_PROCESS_RUN + "\n" +
"SET process_start_date_time = :startDateTime, process_end_date_time = :endDateTime, \n" +
" invoked_by = :invokedBy, exceptions = :exceptions\n" +
"WHERE id = :id"
),
SELECT_DATA_PROCESS_UNITS(
"SELECT process_id, source_type, source_id, action, start_date_time, end_date_time, errors, messages,\n" +
" COUNT(*) OVER () AS total_count\n" +
"FROM ${schema}." + SqlTable.DATA_PROCESS_UNIT + "\n" +
"WHERE process_id = :processId"
),
SELECT_FIRST_AND_LAST_DATA_PROCESS_UNITS(
"SELECT process_id, source_type, source_id, action, start_date_time, end_date_time, errors, messages\n" +
"FROM ${schema}." + SqlTable.DATA_PROCESS_UNIT + "\n" +
"WHERE process_id = :processId AND start_date_time = " +
"(SELECT MIN(start_date_time) FROM ${schema}." + SqlTable.DATA_PROCESS_UNIT + " WHERE process_id = :processId)\n" +
"OR start_date_time = " +
"(SELECT MAX(start_date_time) FROM ${schema}." + SqlTable.DATA_PROCESS_UNIT + " WHERE process_id = :processId)\n" +
"ORDER BY start_date_time ASC"
),
DELETE_PROCESS_UNITS(
"DELETE FROM ${schema}." + SqlTable.DATA_PROCESS_UNIT + "\n" +
"WHERE process_id = :processId"
),
INSERT_PROCESS_UNIT(
"INSERT INTO ${schema}." + SqlTable.DATA_PROCESS_UNIT + "\n" +
"(process_id, source_type, source_id, action, start_date_time, end_date_time, messages, errors)\n" +
"VALUES (:processId, :sourceType, :sourceId, :action, :startDateTime, :endDateTime, :messages, :errors)"
)
;
private String sql;
SqlDataProcessLogQuery(String sql) {
this.sql = sql;
}
@Override
public String getSql() {
return sql;
}
}