package gov.nysenate.openleg.dao.entity.committee.data;
import gov.nysenate.openleg.dao.base.BasicSqlQuery;
import gov.nysenate.openleg.dao.base.SqlTable;
public enum SqlCommitteeQuery implements BasicSqlQuery
{
SELECT_COMMITTEE_ID(
"SELECT chamber, name FROM ${schema}." + SqlTable.COMMITTEE
),
SELECT_SESSION_YEARS(
"SELECT DISTINCT session_year FROM ${schema}." + SqlTable.COMMITTEE_VERSION
),
SELECT_COMMITTEE_SESSION_IDS(
"SELECT DISTINCT chamber, committee_name, session_year FROM ${schema}." + SqlTable.COMMITTEE_VERSION
),
SELECT_COMMITTEE_VERSION_BASE(
"SELECT * FROM ${schema}." + SqlTable.COMMITTEE_VERSION + " cv" + "\n" +
" JOIN ${schema}." + SqlTable.COMMITTEE_MEMBER + " cm" + "\n" +
"ON cv.chamber = cm.chamber AND cv.committee_name = cm.committee_name AND cv.created = cm.version_created"
),
SELECT_COMMITTEE_VERSION_HISTORY(
SELECT_COMMITTEE_VERSION_BASE.sql + "\n" +
"WHERE cv.committee_name = :committeeName::citext AND cv.chamber = :chamber::chamber" + "\n" +
" AND cv.session_year = :sessionYear"
),
SELECT_COMMITTEE_CURRENT_SQL(
SELECT_COMMITTEE_VERSION_HISTORY.sql + "\n" +
"WHERE cv.reformed = 'infinity'::timestamp without time zone"
),
SELECT_COMMITTEE_AT_DATE_SQL(
SELECT_COMMITTEE_VERSION_HISTORY.sql + "\n" +
" AND :referenceDate >= cv.created" + "\n" +
" AND :referenceDate < cv.reformed"
),
SELECT_COMMITTEE_CURRENT_VERSION(
"SELECT current_version FROM ${schema}." + SqlTable.COMMITTEE + "\n" +
"WHERE name=:committeeName::citext AND chamber=CAST(:chamber AS chamber)"
),
SELECT_PREVIOUS_COMMITTEE_VERSION(
"SELECT * FROM ${schema}." + SqlTable.COMMITTEE_VERSION + "\n" +
"WHERE committee_name=:committeeName::citext AND chamber=CAST(:chamber AS chamber) " + "\n" +
" AND session_year=:sessionYear AND :referenceDate > created" + "\n" +
"ORDER BY created DESC" + "\n" +
"LIMIT 1"
),
INSERT_COMMITTEE(
"INSERT INTO ${schema}." + SqlTable.COMMITTEE + " (name, chamber)" + "\n" +
"VALUES (:committeeName, CAST(:chamber AS chamber))"
),
INSERT_COMMITTEE_VERSION(
"INSERT INTO ${schema}." + SqlTable.COMMITTEE_VERSION + "\n" +
" (committee_name, chamber, session_year, location, meetday, meettime, meetaltweek, " + "\n" +
" meetaltweektext, created, last_fragment_id)" + "\n" +
"VALUES (:committeeName, :chamber::chamber, :sessionYear, :location, :meetday, :meettime, :meetaltweek, " + "\n" +
" :meetaltweektext, :referenceDate, :lastFragmentId)"
),
INSERT_COMMITTEE_MEMBER(
"INSERT INTO ${schema}." + SqlTable.COMMITTEE_MEMBER +
" (committee_name, chamber, version_created, session_member_id, session_year, sequence_no, title, majority)" + "\n" +
"VALUES (:committeeName, CAST(:chamber AS chamber), :referenceDate, :session_member_id, :sessionYear, :sequence_no, CAST(:title AS committee_member_title), :majority)"
),
UPDATE_COMMITTEE_MEETING_INFO(
"UPDATE ${schema}." + SqlTable.COMMITTEE_VERSION + "\n" +
"SET location=:location, meetday=:meetday, meettime=:meettime, meetaltweek=:meetaltweek, " + "\n" +
" meetaltweektext=:meetaltweektext, last_fragment_id=:lastFragmentId" + "\n" +
"WHERE committee_name=:committeeName::citext AND chamber=CAST(:chamber AS chamber) " + "\n" +
" AND session_year=:sessionYear AND created=:referenceDate"
),
UPDATE_COMMITTEE_CURRENT_VERSION(
"UPDATE ${schema}." + SqlTable.COMMITTEE + "\n" +
"SET current_version=:referenceDate, current_session=:sessionYear" + "\n" +
"WHERE name=:committeeName::citext AND chamber=CAST(:chamber AS chamber) AND current_session<=:sessionYear"
),
UPDATE_COMMITTEE_VERSION_REFORMED(
"UPDATE ${schema}." + SqlTable.COMMITTEE_VERSION + "\n" +
"SET reformed=:reformed, last_fragment_id=:lastFragmentId" + "\n" +
"WHERE committee_name=:committeeName::citext AND chamber=CAST(:chamber AS chamber) " + "\n" +
" AND session_year=:sessionYear AND created=:referenceDate"
),
UPDATE_COMMITTEE_VERSION_REFORMED_CURRENT(
"UPDATE ${schema}." + SqlTable.COMMITTEE_VERSION + "\n" +
"SET reformed='infinity'::timestamp without time zone, last_fragment_id=:lastFragmentId" + "\n" +
"WHERE committee_name=:committeeName::citext AND chamber=CAST(:chamber AS chamber) " + "\n" +
" AND session_year=:sessionYear AND created=:referenceDate"
),
DELETE_COMMITTEE(
"DELETE FROM ${schema}." + SqlTable.COMMITTEE + "\n" +
"WHERE name=:committeeName::citext AND chamber=CAST(:chamber AS chamber)"
),
DELETE_COMMITTEE_VERSION_FUTURE(
"DELETE FROM ${schema}." + SqlTable.COMMITTEE_VERSION + "\n" +
"WHERE committee_name=:committeeName::citext AND chamber=CAST(:chamber AS chamber)" + "\n" +
" AND session_year=:sessionYear AND created>:referenceDate"
),
DELETE_COMMITTEE_VERSION(
"DELETE FROM ${schema}." + SqlTable.COMMITTEE_VERSION + "\n" +
"WHERE committee_name=:committeeName::citext AND chamber=CAST(:chamber AS chamber)" + "\n" +
" AND session_year=:sessionYear AND created=:referenceDate"
),
DELETE_COMMITTEE_MEMBERS(
"DELETE FROM ${schema}." + SqlTable.COMMITTEE_MEMBER + "\n" +
"WHERE committee_name=:committeeName::citext AND chamber=CAST(:chamber AS chamber)" + "\n" +
" AND session_year=:sessionYear AND version_created=:referenceDate"
);
private String sql;
SqlCommitteeQuery(String sql) {
this.sql = sql;
}
@Override
public String getSql() {
return this.sql;
}
}