From a46e8548289b77b1c2cf98dba4ec67ff77e213ff Mon Sep 17 00:00:00 2001 From: Sylvain Jermini Date: Tue, 4 Aug 2015 22:02:29 +0200 Subject: [PATCH] remove default empty project if unused --- .../io/lavagna/config/DataSourceConfig.java | 2 +- ...V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql | 40 +++++++++++++++++++ ...V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql | 40 +++++++++++++++++++ ...V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql | 40 +++++++++++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/io/lavagna/db/HSQLDB/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql create mode 100644 src/main/resources/io/lavagna/db/MYSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql create mode 100644 src/main/resources/io/lavagna/db/PGSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql diff --git a/src/main/java/io/lavagna/config/DataSourceConfig.java b/src/main/java/io/lavagna/config/DataSourceConfig.java index ce1c97a1c..5f6cf140c 100644 --- a/src/main/java/io/lavagna/config/DataSourceConfig.java +++ b/src/main/java/io/lavagna/config/DataSourceConfig.java @@ -37,7 +37,7 @@ public class DataSourceConfig { - public static final MigrationVersion LATEST_STABLE_VERSION = MigrationVersion.fromVersion("7"); + public static final MigrationVersion LATEST_STABLE_VERSION = MigrationVersion.fromVersion("8"); @Bean(destroyMethod = "close") public DataSource getDataSource(Environment env) throws URISyntaxException { diff --git a/src/main/resources/io/lavagna/db/HSQLDB/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql b/src/main/resources/io/lavagna/db/HSQLDB/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql new file mode 100644 index 000000000..7b68a1936 --- /dev/null +++ b/src/main/resources/io/lavagna/db/HSQLDB/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql @@ -0,0 +1,40 @@ +-- +-- 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 . +-- + +DELETE FROM LA_BOARD_COLUMN_DEFINITION WHERE +BOARD_COLUMN_DEFINITION_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_CARD_LABEL_LIST_VALUE WHERE CARD_LABEL_LIST_VALUE_ID IN (SELECT CARD_LABEL_LIST_VALUE_ID FROM LA_CARD_LABEL_LIST_VALUE INNER JOIN +LA_CARD_LABEL ON CARD_LABEL_ID_FK = CARD_LABEL_ID WHERE CARD_LABEL_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT')) AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_CARD_LABEL WHERE +CARD_LABEL_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT_ROLE_PERMISSION WHERE +PROJECT_ROLE_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT_ROLE WHERE +PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT WHERE +(PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; \ No newline at end of file diff --git a/src/main/resources/io/lavagna/db/MYSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql b/src/main/resources/io/lavagna/db/MYSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql new file mode 100644 index 000000000..1492b6eed --- /dev/null +++ b/src/main/resources/io/lavagna/db/MYSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql @@ -0,0 +1,40 @@ +-- +-- 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 . +-- + +DELETE FROM LA_BOARD_COLUMN_DEFINITION WHERE +BOARD_COLUMN_DEFINITION_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_CARD_LABEL_LIST_VALUE WHERE CARD_LABEL_LIST_VALUE_ID IN (SELECT * FROM (SELECT CARD_LABEL_LIST_VALUE_ID FROM LA_CARD_LABEL_LIST_VALUE INNER JOIN +LA_CARD_LABEL ON CARD_LABEL_ID_FK = CARD_LABEL_ID WHERE CARD_LABEL_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT')) A) AND +(SELECT COUNT(PROJECT_ID) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_CARD_LABEL WHERE +CARD_LABEL_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT_ROLE_PERMISSION WHERE +PROJECT_ROLE_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT_ROLE WHERE +PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT WHERE +(PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT * FROM ((SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT')) A) = 0; \ No newline at end of file diff --git a/src/main/resources/io/lavagna/db/PGSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql b/src/main/resources/io/lavagna/db/PGSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql new file mode 100644 index 000000000..7b68a1936 --- /dev/null +++ b/src/main/resources/io/lavagna/db/PGSQL/V8__REMOVE_DEFAULT_PROJECT_IF_NOT_USED.sql @@ -0,0 +1,40 @@ +-- +-- 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 . +-- + +DELETE FROM LA_BOARD_COLUMN_DEFINITION WHERE +BOARD_COLUMN_DEFINITION_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_CARD_LABEL_LIST_VALUE WHERE CARD_LABEL_LIST_VALUE_ID IN (SELECT CARD_LABEL_LIST_VALUE_ID FROM LA_CARD_LABEL_LIST_VALUE INNER JOIN +LA_CARD_LABEL ON CARD_LABEL_ID_FK = CARD_LABEL_ID WHERE CARD_LABEL_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT')) AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_CARD_LABEL WHERE +CARD_LABEL_PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT_ROLE_PERMISSION WHERE +PROJECT_ROLE_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT_ROLE WHERE +PROJECT_ID_FK = (SELECT PROJECT_ID FROM LA_PROJECT WHERE PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; + +DELETE FROM LA_PROJECT WHERE +(PROJECT_SHORT_NAME = 'DEFAULT') AND +(SELECT COUNT(*) FROM LA_BOARD INNER JOIN LA_PROJECT ON BOARD_PROJECT_ID_FK = PROJECT_ID WHERE PROJECT_SHORT_NAME = 'DEFAULT') = 0; \ No newline at end of file