package gov.nysenate.openleg.dao.sobi;
import gov.nysenate.openleg.dao.base.BasicSqlQuery;
import gov.nysenate.openleg.dao.base.SqlTable;
public enum SqlSobiQuery implements BasicSqlQuery
{
/** --- Sobi Files --- */
GET_SOBI_FILES_BY_FILE_NAMES(
"SELECT * FROM ${schema}." + SqlTable.SOBI_FILE + "\n" +
"WHERE file_name IN (:fileNames)"
),
GET_SOBI_FILES_DURING(
"SELECT file_name, published_date_time, staged_date_time, encoding, archived, COUNT(*) OVER () AS total_count\n" +
"FROM ${schema}." + SqlTable.SOBI_FILE + "\n" +
"WHERE (published_date_time BETWEEN :startDate AND :endDate)"
),
INSERT_SOBI_FILE(
"INSERT INTO ${schema}." + SqlTable.SOBI_FILE + "\n" +
"(file_name, published_date_time, encoding, archived) " +
"VALUES (:fileName, :publishedDateTime, :encoding, :archived)"
),
UPDATE_SOBI_FILE(
"UPDATE ${schema}." + SqlTable.SOBI_FILE + "\n" +
"SET published_date_time = :publishedDateTime," +
" encoding = :encoding," +
" archived = :archived " +
"WHERE file_name = :fileName"
),
/** --- Sobi Fragments --- */
CHECK_SOBI_FRAGMENT_EXISTS(
"SELECT 1 FROM ${schema}." + SqlTable.SOBI_FRAGMENT + "\n" +
"WHERE fragment_id = :fragmentId"
),
GET_SOBI_FRAGMENT_BY_FILE_NAME(
"SELECT * FROM ${schema}." + SqlTable.SOBI_FRAGMENT + "\n" +
"WHERE fragment_id = :fragmentId"
),
GET_SOBI_FRAGMENTS_BY_SOBI_FILE(
"SELECT * FROM ${schema}." + SqlTable.SOBI_FRAGMENT + "\n" +
"WHERE sobi_file_name = :sobiFileName"
),
GET_SOBI_FRAGMENTS_BY_SOBI_FILE_AND_TYPE(
"SELECT * FROM ${schema}." + SqlTable.SOBI_FRAGMENT + "\n" +
"WHERE sobi_file_name = :sobiFileName AND fragment_type = :fragmentType"
),
GET_PENDING_SOBI_FRAGMENTS(
"SELECT * FROM ${schema}." + SqlTable.SOBI_FRAGMENT + "\n" +
"WHERE pending_processing = true"
),
GET_PENDING_SOBI_FRAGMENTS_BY_TYPE(
GET_PENDING_SOBI_FRAGMENTS.sql + " AND fragment_type IN (:fragmentTypes)"
),
UPDATE_SOBI_FRAGMENT(
"UPDATE ${schema}." + SqlTable.SOBI_FRAGMENT + "\n" +
"SET sobi_file_name = :sobiFileName, published_date_time = :publishedDateTime, " +
" fragment_type = :fragmentType, text = :text, sequence_no = :sequenceNo, " +
" processed_count = :processedCount, processed_date_time = :processedDateTime, " +
" pending_processing = :pendingProcessing, manual_fix = :manualFix, manual_fix_notes = :manualFixNotes \n" +
"WHERE fragment_id = :fragmentId"
),
INSERT_SOBI_FRAGMENT(
"INSERT INTO ${schema}." + SqlTable.SOBI_FRAGMENT +
"(sobi_file_name, fragment_id, published_date_time, fragment_type, text, sequence_no, " +
" processed_count, processed_date_time, pending_processing, manual_fix, manual_fix_notes)\n" +
"VALUES (:sobiFileName, :fragmentId, :publishedDateTime, :fragmentType, :text, :sequenceNo," +
" :processedCount, :processedDateTime, :pendingProcessing, :manualFix, :manualFixNotes)"
),
DELETE_SOBI_FRAGMENTS(
"DELETE FROM ${schema}." + SqlTable.SOBI_FRAGMENT + " WHERE sobi_file_name = :sobiFileName"
);
private String sql;
SqlSobiQuery(String sql) {
this.sql = sql;
}
@Override
public String getSql() {
return this.sql;
}
}