package gov.nysenate.openleg.dao.activelist; import gov.nysenate.openleg.dao.base.BasicSqlQuery; import gov.nysenate.openleg.dao.base.SqlTable; /** * Created by kyle on 11/21/14. */ public enum SqlActiveListReferenceQuery implements BasicSqlQuery { INSERT_ACTIVE_LIST_REFERENCE( "INSERT INTO ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE+"(sequence_no, calendar_no, calendar_year, " + "calendar_date, release_date_time, reference_date)\n"+ "VALUES(:sequence_no, :calendar_no, :calendar_year, :calendar_date, " + ":release_date_time, :reference_date)" ), INSERT_ACTIVE_LIST_REFERENCE_ENTRY( "INSERT INTO ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE_ENTRY+"(active_list_reference_id, " + "bill_calendar_no, bill_print_no, bill_amend_version, bill_session_year)\n"+ "VALUES(:active_list_reference_id, :bill_calendar_no, :bill_print_no, :bill_amend_version, " + ":bill_session_year)" ), SELECT_ACTIVE_LIST( "SELECT * FROM ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE+"\n"+ "WHERE calendar_year = :calendar_year AND calendar_no = :calendar_no AND " + "sequence_no = :sequence_no AND reference_date = :reference_date" ), SELECT_MOST_RECENT_REPORT( "SELECT * FROM ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE+"\n"+ "WHERE calendar_year = :calendar_year AND calendar_no = :calendar_no AND " + "sequence_no = :sequence_no\n" + "ORDER BY reference_date DESC\n" + "LIMIT 1" ), SELECT_MOST_RECENT_FROM_EACH_YEAR( "SELECT * FROM ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE+" list1\n"+ "INNER JOIN(\n" + "SELECT calendar_no, sequence_no, MAX(reference_date) maxdate\n" + "FROM ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE+"\n" + "GROUP BY calendar_no, sequence_no) list2 on list1.sequence_no = list2.sequence_no AND " + "list1.calendar_no = list2.calendar_no and list1.reference_date = list2.maxdate\n" + "WHERE calendar_year = :calendar_year" ), SELECT_ACTIVE_LIST_REFERENCE_ENTRIES( "SELECT * FROM ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE_ENTRY+" refEntry, " + "${schema}."+SqlTable.ACTIVE_LIST_REFERENCE+" ref\n"+ "WHERE refEntry.active_list_reference_id = ref.id AND calendar_year = :calendar_year" + "AND calendar_no = :calendar_no AND sequence_no = :sequence_no AND reference_date = :reference_date" ), SELECT_RANGE_ACTIVE_LIST( "SELECT * FROM ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE+"\n" + "WHERE releasedatetime > :begin AND releasedatetime < :end" ), DELETE_REFERENCE_ENTRIES( "DELETE FROM ${schema}."+SqlTable.ACTIVE_LIST_REFERENCE_ENTRY+"\n" + "WHERE active_list_reference_id = :active_list_reference_id" ), UPDATE_ACTIVE_LIST( "UPDATE ${schema}." +SqlTable.ACTIVE_LIST_REFERENCE+"\n" + "SET release_date_time = :release_date_time, calendar_date = :calendar_date\n" + "WHERE sequence_no = :sequence_no AND calendar_no = :calendar_no AND calendar_year =:calendar_year" + " AND reference_date = :reference_date" ) ; private String sql; SqlActiveListReferenceQuery(String sql) { this.sql = sql; } @Override public String getSql() { return this.sql; } }