-- MàJ de la version en BDD
UPDATE om_version SET om_version = '6.3.0' WHERE exists(SELECT 1 FROM om_version) = true;
INSERT INTO om_version
SELECT ('6.3.0') WHERE exists(SELECT 1 FROM om_version) = false;

--
-- BEGIN / [#10292] Gestion des utilisateurs liés pour changer de compte sans se déconnecter de l'application
--

CREATE TABLE IF NOT EXISTS lien_om_utilisateur_om_utilisateur (
    lien_om_utilisateur_om_utilisateur INTEGER NOT NULL,
    om_utilisateur INTEGER NOT NULL,
    om_utilisateur_lie INTEGER NOT NULL,
    CONSTRAINT lien_om_utilisateur_om_utilisateur_pkey PRIMARY KEY (lien_om_utilisateur_om_utilisateur)
);

CREATE INDEX IF NOT EXISTS lien_om_utilisateur_om_utilisateur_dit ON lien_om_utilisateur_om_utilisateur (om_utilisateur);
CREATE INDEX IF NOT EXISTS lien_om_utilisateur_om_utilisateur_nt ON lien_om_utilisateur_om_utilisateur (om_utilisateur_lie);

COMMENT ON TABLE lien_om_utilisateur_om_utilisateur IS 'Liste des liens entre les comptes utilisateurs principals et comptes utilisateurs liés';
COMMENT ON COLUMN lien_om_utilisateur_om_utilisateur.lien_om_utilisateur_om_utilisateur IS 'Identifiant du lien';
COMMENT ON COLUMN lien_om_utilisateur_om_utilisateur.om_utilisateur IS 'Identifiant de l''utilisateur principal';
COMMENT ON COLUMN lien_om_utilisateur_om_utilisateur.om_utilisateur_lie IS 'Identifiant de l''utilisateur lié';

-- Séquence de la table lien_om_utilisateur_om_utilisateur
CREATE SEQUENCE IF NOT EXISTS lien_om_utilisateur_om_utilisateur_seq
   START WITH 1
   INCREMENT BY 1
   NO MINVALUE
   NO MAXVALUE
   CACHE 1;

-- Contraintes de la table lien_om_utilisateur_om_utilisateur
ALTER TABLE ONLY lien_om_utilisateur_om_utilisateur
   DROP CONSTRAINT IF EXISTS lien_om_utilisateur_om_utilisateur_om_utilisateur_fkey,
   DROP CONSTRAINT IF EXISTS lien_om_utilisateur_om_utilisateur_om_utilisateur_lie_fkey,
   DROP CONSTRAINT IF EXISTS lien_om_utilisateur_om_utilisateur_om_utilisateur_lie_unique;
ALTER TABLE ONLY lien_om_utilisateur_om_utilisateur
   ADD CONSTRAINT lien_om_utilisateur_om_utilisateur_om_utilisateur_fkey FOREIGN KEY (om_utilisateur) REFERENCES om_utilisateur(om_utilisateur),
   ADD CONSTRAINT lien_om_utilisateur_om_utilisateur_om_utilisateur_lie_fkey FOREIGN KEY (om_utilisateur_lie) REFERENCES om_utilisateur(om_utilisateur),
   ADD CONSTRAINT lien_om_utilisateur_om_utilisateur_lie_unique UNIQUE (om_utilisateur, om_utilisateur_lie);

-- Permissions
INSERT INTO om_droit (om_droit, libelle, om_profil)
SELECT nextval('om_droit_seq'), 'lien_om_utilisateur_om_utilisateur', (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL')
WHERE NOT EXISTS (
    SELECT om_droit FROM om_droit WHERE libelle = 'lien_om_utilisateur_om_utilisateur' AND om_profil = (SELECT om_profil FROM om_profil WHERE libelle = 'ADMINISTRATEUR TECHNIQUE ET FONCTIONNEL')
);

--
-- END / [#10292] Gestion des utilisateurs liés pour changer de compte sans se déconnecter de l'application
--
