/** * This file is part of lavagna. * * lavagna is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * lavagna is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with lavagna. If not, see <http://www.gnu.org/licenses/>. */ package io.lavagna.query; import ch.digitalfondue.npjt.*; import io.lavagna.model.ProjectMailTicket; import io.lavagna.model.ProjectMailTicketConfig; import java.util.Date; import java.util.List; @QueryRepository public interface MailTicketQuery { @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET_CONFIG") List<ProjectMailTicketConfig> findAllConfigs(); @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET_CONFIG WHERE MAIL_CONFIG_PROJECT_ID_FK = :projectId") List<ProjectMailTicketConfig> findConfigsByProject(@Bind("projectId") int projectId); @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET") List<ProjectMailTicket> findAllTickets(); @Query("SELECT MAIL_TICKET_ID, MAIL_TICKET_NAME, MAIL_TICKET_ENABLED, MAIL_TICKET_ALIAS, MAIL_TICKET_USE_ALIAS, MAIL_TICKET_NOTIFICATION_OVERRIDE, MAIL_TICKET_SUBJECT, MAIL_TICKET_BODY, MAIL_TICKET_COLUMN_ID_FK, MAIL_TICKET_CONFIG_ID_FK, MAIL_TICKET_METADATA FROM LA_PROJECT_MAIL_TICKET" + " INNER JOIN LA_PROJECT_MAIL_TICKET_CONFIG ON MAIL_TICKET_CONFIG_ID_FK = MAIL_CONFIG_ID WHERE MAIL_CONFIG_PROJECT_ID_FK = :projectId") List<ProjectMailTicket> findAllByProject(@Bind("projectId") int projectId); @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET WHERE MAIL_TICKET_CONFIG_ID_FK = :configId") List<ProjectMailTicket> findAllByConfig(@Bind("configId") int configId); @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET_CONFIG WHERE MAIL_CONFIG_ID = :id") ProjectMailTicketConfig findConfigById(@Bind("id") int id); @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET WHERE MAIL_TICKET_ID = :id") ProjectMailTicket findTicketById(@Bind("id") int id); @Query("INSERT INTO LA_PROJECT_MAIL_TICKET_CONFIG(MAIL_CONFIG_NAME, MAIL_CONFIG_PROJECT_ID_FK, MAIL_CONFIG_CONFIG, MAIL_CONFIG_SUBJECT, MAIL_CONFIG_BODY)" + "VALUES (:name, :projectId, :config, :subject, :body)") int addConfig(@Bind("name") String name, @Bind("projectId") int projectId, @Bind("config") String config, @Bind("subject") String subject, @Bind("body") String body); @Query("UPDATE LA_PROJECT_MAIL_TICKET_CONFIG SET MAIL_CONFIG_NAME = :name, MAIL_CONFIG_ENABLED = :enabled, MAIL_CONFIG_CONFIG = :config, MAIL_CONFIG_SUBJECT = :subject, MAIL_CONFIG_BODY = :body WHERE MAIL_CONFIG_ID = :id AND MAIL_CONFIG_PROJECT_ID_FK = :projectId") int updateConfig(@Bind("id") int id, @Bind("name") String name, @Bind("enabled") boolean enabled, @Bind("config") String config, @Bind("subject") String subject, @Bind("body") String body, @Bind("projectId") int projectId); @Query("DELETE FROM LA_PROJECT_MAIL_TICKET_CONFIG WHERE MAIL_CONFIG_ID = :id AND MAIL_CONFIG_PROJECT_ID_FK = :projectId") int deleteConfig(@Bind("id") int id, @Bind("projectId") int projectId); @Query("UPDATE LA_PROJECT_MAIL_TICKET_CONFIG SET MAIL_CONFIG_LAST_CHECKED = :date WHERE MAIL_CONFIG_ID = :id") int updateConfigLastChecked(@Bind("id") int id, @Bind("date") Date date); @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET_CONFIG WHERE MAIL_CONFIG_ID = IDENTITY()") @QueriesOverride({ @QueryOverride(db = DB.MYSQL, value = "SELECT * FROM LA_PROJECT_MAIL_TICKET_CONFIG WHERE MAIL_CONFIG_ID = LAST_INSERT_ID()"), @QueryOverride(db = DB.PGSQL, value = "SELECT * FROM LA_PROJECT_MAIL_TICKET_CONFIG WHERE MAIL_CONFIG_ID = (SELECT CURRVAL(pg_get_serial_sequence('la_project_mail_ticket_config','mail_config_id')))") }) ProjectMailTicketConfig findLastCreatedConfig(); @Query("INSERT INTO LA_PROJECT_MAIL_TICKET(MAIL_TICKET_NAME, MAIL_TICKET_ALIAS, MAIL_TICKET_USE_ALIAS, MAIL_TICKET_NOTIFICATION_OVERRIDE, MAIL_TICKET_SUBJECT, MAIL_TICKET_BODY, MAIL_TICKET_COLUMN_ID_FK, MAIL_TICKET_CONFIG_ID_FK, MAIL_TICKET_METADATA)" + "VALUES (:name, :alias, :useAlias, :notificationOverride, :subject, :body, :columnId, :configId, :metadata)") int addTicket(@Bind("name") String name, @Bind("alias") String alias, @Bind("useAlias") boolean useAlias, @Bind("notificationOverride") boolean notificationOverride, @Bind("subject") String subject, @Bind("body") String body, @Bind("columnId") int columnId, @Bind("configId") int configId, @Bind("metadata") String metadata); @Query("UPDATE LA_PROJECT_MAIL_TICKET SET MAIL_TICKET_NAME = :name, MAIL_TICKET_ENABLED = :enabled, MAIL_TICKET_ALIAS = :alias, MAIL_TICKET_USE_ALIAS = :useAlias, MAIL_TICKET_NOTIFICATION_OVERRIDE = :notificationOverride, MAIL_TICKET_SUBJECT = :subject, MAIL_TICKET_BODY = :body, MAIL_TICKET_COLUMN_ID_FK = :columnId, MAIL_TICKET_CONFIG_ID_FK = :configId, MAIL_TICKET_METADATA = :metadata WHERE MAIL_TICKET_ID = :id") int updateTicket(@Bind("id") int id, @Bind("name") String name, @Bind("enabled") boolean enabled, @Bind("alias") String alias, @Bind("useAlias") boolean useAlias, @Bind("notificationOverride") boolean notificationOverride, @Bind("subject") String subject, @Bind("body") String body, @Bind("columnId") int columnId, @Bind("configId") int configId, @Bind("metadata") String metadata); @Query("DELETE FROM LA_PROJECT_MAIL_TICKET WHERE MAIL_TICKET_ID = :id") int deleteTicket(@Bind("id") int id); @Query("SELECT * FROM LA_PROJECT_MAIL_TICKET WHERE MAIL_TICKET_ID = IDENTITY()") @QueriesOverride({ @QueryOverride(db = DB.MYSQL, value = "SELECT * FROM LA_PROJECT_MAIL_TICKET WHERE MAIL_TICKET_ID = LAST_INSERT_ID()"), @QueryOverride(db = DB.PGSQL, value = "SELECT * FROM LA_PROJECT_MAIL_TICKET WHERE MAIL_TICKET_ID = (SELECT CURRVAL(pg_get_serial_sequence('la_project_mail_ticket','mail_ticket_id')))") }) ProjectMailTicket findLastCreatedTicket(); }