feat: make all Flyway SQL migrations fully idempotent
This commit is contained in:
@@ -1,16 +1,16 @@
|
|||||||
CREATE TABLE role (
|
CREATE TABLE IF NOT EXISTS role (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
name VARCHAR(50) UNIQUE NOT NULL
|
name VARCHAR(50) UNIQUE NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE app_user (
|
CREATE TABLE IF NOT EXISTS app_user (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
username VARCHAR(100) UNIQUE NOT NULL,
|
username VARCHAR(100) UNIQUE NOT NULL,
|
||||||
password VARCHAR(255) NOT NULL,
|
password VARCHAR(255) NOT NULL,
|
||||||
enabled BOOLEAN NOT NULL DEFAULT TRUE
|
enabled BOOLEAN NOT NULL DEFAULT TRUE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE user_role (
|
CREATE TABLE IF NOT EXISTS user_role (
|
||||||
user_id BIGINT NOT NULL,
|
user_id BIGINT NOT NULL,
|
||||||
role_id BIGINT NOT NULL,
|
role_id BIGINT NOT NULL,
|
||||||
PRIMARY KEY (user_id, role_id),
|
PRIMARY KEY (user_id, role_id),
|
||||||
@@ -18,7 +18,7 @@ CREATE TABLE user_role (
|
|||||||
CONSTRAINT fk_role FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE CASCADE
|
CONSTRAINT fk_role FOREIGN KEY (role_id) REFERENCES role(id) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE adherent (
|
CREATE TABLE IF NOT EXISTS adherent (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
nom VARCHAR(100) NOT NULL,
|
nom VARCHAR(100) NOT NULL,
|
||||||
prenom VARCHAR(100) NOT NULL,
|
prenom VARCHAR(100) NOT NULL,
|
||||||
@@ -29,7 +29,7 @@ CREATE TABLE adherent (
|
|||||||
representant_legal VARCHAR(150)
|
representant_legal VARCHAR(150)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE categorie (
|
CREATE TABLE IF NOT EXISTS categorie (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
nom VARCHAR(20) UNIQUE NOT NULL,
|
nom VARCHAR(20) UNIQUE NOT NULL,
|
||||||
annee_min INT,
|
annee_min INT,
|
||||||
@@ -37,7 +37,7 @@ CREATE TABLE categorie (
|
|||||||
tarif_base DECIMAL(10,2) NOT NULL
|
tarif_base DECIMAL(10,2) NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE licence (
|
CREATE TABLE IF NOT EXISTS licence (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
adherent_id BIGINT NOT NULL,
|
adherent_id BIGINT NOT NULL,
|
||||||
categorie_id BIGINT NOT NULL,
|
categorie_id BIGINT NOT NULL,
|
||||||
@@ -47,7 +47,7 @@ CREATE TABLE licence (
|
|||||||
CONSTRAINT fk_licence_categorie FOREIGN KEY (categorie_id) REFERENCES categorie(id)
|
CONSTRAINT fk_licence_categorie FOREIGN KEY (categorie_id) REFERENCES categorie(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE paiement (
|
CREATE TABLE IF NOT EXISTS paiement (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
licence_id BIGINT NOT NULL,
|
licence_id BIGINT NOT NULL,
|
||||||
montant DECIMAL(10,2) NOT NULL,
|
montant DECIMAL(10,2) NOT NULL,
|
||||||
@@ -56,14 +56,14 @@ CREATE TABLE paiement (
|
|||||||
CONSTRAINT fk_paiement_licence FOREIGN KEY (licence_id) REFERENCES licence(id) ON DELETE CASCADE
|
CONSTRAINT fk_paiement_licence FOREIGN KEY (licence_id) REFERENCES licence(id) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE equipement (
|
CREATE TABLE IF NOT EXISTS equipement (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
nom VARCHAR(100) NOT NULL,
|
nom VARCHAR(100) NOT NULL,
|
||||||
description TEXT,
|
description TEXT,
|
||||||
obligatoire BOOLEAN NOT NULL DEFAULT FALSE
|
obligatoire BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE dotation (
|
CREATE TABLE IF NOT EXISTS dotation (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
licence_id BIGINT NOT NULL,
|
licence_id BIGINT NOT NULL,
|
||||||
equipement_id BIGINT NOT NULL,
|
equipement_id BIGINT NOT NULL,
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
CREATE TABLE mode_paiement (
|
CREATE TABLE IF NOT EXISTS mode_paiement (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
nom VARCHAR(50) UNIQUE NOT NULL
|
nom VARCHAR(50) UNIQUE NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
INSERT INTO mode_paiement (nom) VALUES ('Espèces'), ('Chèque'), ('Pass Sport'), ('Virement');
|
INSERT INTO mode_paiement (nom) VALUES ('Espèces'), ('Chèque'), ('Pass Sport'), ('Virement')
|
||||||
|
ON CONFLICT (nom) DO NOTHING;
|
||||||
|
|
||||||
ALTER TABLE paiement ADD COLUMN mode_paiement_id BIGINT;
|
ALTER TABLE paiement ADD COLUMN IF NOT EXISTS mode_paiement_id BIGINT;
|
||||||
|
|
||||||
ALTER TABLE paiement ADD CONSTRAINT fk_paiement_mode FOREIGN KEY (mode_paiement_id) REFERENCES mode_paiement(id);
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_paiement_mode') THEN
|
||||||
|
ALTER TABLE paiement ADD CONSTRAINT fk_paiement_mode FOREIGN KEY (mode_paiement_id) REFERENCES mode_paiement(id);
|
||||||
|
END IF;
|
||||||
|
END $$;
|
||||||
|
|
||||||
ALTER TABLE paiement DROP COLUMN mode_paiement;
|
ALTER TABLE paiement DROP COLUMN IF EXISTS mode_paiement;
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
INSERT INTO role (name) VALUES ('ROLE_ADMIN'), ('ROLE_USER');
|
INSERT INTO role (name) VALUES ('ROLE_ADMIN'), ('ROLE_USER') ON CONFLICT (name) DO NOTHING;
|
||||||
|
|
||||||
-- Password is "Talange2026!" hashed with Argon2id
|
-- Password is "Talange2026!" hashed with Argon2id
|
||||||
INSERT INTO app_user (username, password, enabled) VALUES ('Ucef', '$argon2id$v=19$m=65536,t=3,p=4$q29E/VM1esZVxo9HufgILQ$Nzb+rwwsZUMy04BbewYum2A8L8ujs9VZj9VJ/609Am0', true);
|
INSERT INTO app_user (username, password, enabled) VALUES ('Ucef', '$argon2id$v=19$m=65536,t=3,p=4$q29E/VM1esZVxo9HufgILQ$Nzb+rwwsZUMy04BbewYum2A8L8ujs9VZj9VJ/609Am0', true)
|
||||||
|
ON CONFLICT (username) DO NOTHING;
|
||||||
|
|
||||||
INSERT INTO user_role (user_id, role_id) VALUES ((SELECT id FROM app_user WHERE username = 'Ucef'), (SELECT id FROM role WHERE name = 'ROLE_ADMIN'));
|
INSERT INTO user_role (user_id, role_id) VALUES ((SELECT id FROM app_user WHERE username = 'Ucef'), (SELECT id FROM role WHERE name = 'ROLE_ADMIN'))
|
||||||
|
ON CONFLICT (user_id, role_id) DO NOTHING;
|
||||||
|
|
||||||
INSERT INTO categorie (nom, annee_min, annee_max, tarif_base) VALUES
|
INSERT INTO categorie (nom, annee_min, annee_max, tarif_base) VALUES
|
||||||
('U6', 2020, 2020, 100.00),
|
('U6', 2020, 2020, 100.00),
|
||||||
@@ -14,10 +16,14 @@ INSERT INTO categorie (nom, annee_min, annee_max, tarif_base) VALUES
|
|||||||
('U11', 2015, 2015, 130.00),
|
('U11', 2015, 2015, 130.00),
|
||||||
('U12', 2014, 2014, 140.00),
|
('U12', 2014, 2014, 140.00),
|
||||||
('U13', 2013, 2013, 140.00),
|
('U13', 2013, 2013, 140.00),
|
||||||
('Senior', 1900, 2005, 180.00);
|
('Senior', 1900, 2005, 180.00)
|
||||||
|
ON CONFLICT (nom) DO NOTHING;
|
||||||
|
|
||||||
INSERT INTO equipement (nom, obligatoire) VALUES
|
INSERT INTO equipement (nom, obligatoire)
|
||||||
('Maillot', true),
|
SELECT 'Maillot', true WHERE NOT EXISTS (SELECT 1 FROM equipement WHERE nom = 'Maillot');
|
||||||
('Short', true),
|
INSERT INTO equipement (nom, obligatoire)
|
||||||
('Chaussettes', true),
|
SELECT 'Short', true WHERE NOT EXISTS (SELECT 1 FROM equipement WHERE nom = 'Short');
|
||||||
('Survêtement', false);
|
INSERT INTO equipement (nom, obligatoire)
|
||||||
|
SELECT 'Chaussettes', true WHERE NOT EXISTS (SELECT 1 FROM equipement WHERE nom = 'Chaussettes');
|
||||||
|
INSERT INTO equipement (nom, obligatoire)
|
||||||
|
SELECT 'Survêtement', false WHERE NOT EXISTS (SELECT 1 FROM equipement WHERE nom = 'Survêtement');
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
-- Ajouter la colonne pour savoir si l'adhérent est résident de Talange (par défaut oui pour les existants)
|
-- Ajouter la colonne pour savoir si l'adhérent est résident de Talange (par défaut oui pour les existants)
|
||||||
ALTER TABLE adherent ADD COLUMN resident_talange BOOLEAN DEFAULT TRUE;
|
ALTER TABLE adherent ADD COLUMN IF NOT EXISTS resident_talange BOOLEAN DEFAULT TRUE;
|
||||||
|
|
||||||
-- Ajouter le tarif extérieur aux catégories
|
-- Ajouter le tarif extérieur aux catégories
|
||||||
ALTER TABLE categorie ADD COLUMN tarif_exterieur DECIMAL(10,2);
|
ALTER TABLE categorie ADD COLUMN IF NOT EXISTS tarif_exterieur DECIMAL(10,2);
|
||||||
|
|
||||||
-- Par défaut, mettre le tarif extérieur égal au tarif de base pour ne pas casser les licences existantes
|
-- Par défaut, mettre le tarif extérieur égal au tarif de base pour ne pas casser les licences existantes
|
||||||
UPDATE categorie SET tarif_exterieur = tarif_base;
|
UPDATE categorie SET tarif_exterieur = tarif_base*1.2 WHERE tarif_exterieur IS NULL;
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ALTER TABLE licence ADD COLUMN numero_licence VARCHAR(50);
|
ALTER TABLE licence ADD COLUMN IF NOT EXISTS numero_licence VARCHAR(50);
|
||||||
|
|||||||
Reference in New Issue
Block a user