Commit 06aaf63a authored by David Surville's avatar David Surville
Browse files

Scripts de migration + docs

parent c803d9ad
Loading
Loading
Loading
Loading
Loading
+9 −1
Changes for readme.md: 9 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -56,7 +56,15 @@ $ composer require unicaen/privilege

Il faut ajouter le module **UnicaenPrivilege** dans le fichier de config `config/application.config.php`

## Migration

## Migration vers les périmètres

Il est nécessaire de modifier la base de données et d'utiliser les scripts de migration disponibles :
* [PostgreSQL](./sql/migration_perimetre_postgresql.sql)
* [Oracle](./sql/migration_perimetre_oracle.sql)

> [!WARNING]
> Certains noms de séquence sont à compléter et il est nécessaire de bien vérifier les noms des tables avant d'utiliser le script de migration. 

## Utilisation du module

+46 −0
Changes for sql/migration_perimetre_oracle.sql: 46 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- Table unicaen_utilisateur_role
-- -----------------------------------------------------
RENAME <seq_name> TO unicaen_utilisateur_role_id_seq;


-- -----------------------------------------------------
-- Table unicaen_utilisateur_user
-- -----------------------------------------------------
RENAME <seq_name> TO unicaen_utilisateur_user_id_seq;


-- -----------------------------------------------------
-- Table unicaen_utilisateur_user_role_linker
-- -----------------------------------------------------
CREATE SEQUENCE unicaen_utilisateur_user_role_linker_id_seq NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE unicaen_utilisateur_user_role_linker (
  id        NUMBER(*,0) NOT NULL,
  user_id   NUMBER(*,0) NOT NULL,
  role_id   NUMBER(*,0) NOT NULL
);

INSERT INTO unicaen_utilisateur_user_role_linker (
  id,
  user_id,
  role_id
)
WITH tmp AS (
  SELECT * FROM unicaen_utilisateur_role_linker
)
SELECT
  unicaen_utilisateur_user_role_linker_id_seq.nextval,
  tmp.user_id,
  tmp.role_id
FROM tmp;

DROP TABLE unicaen_utilisateur_role_linker;
ALTER TABLE unicaen_utilisateur_user_role_linker ADD CONSTRAINT pk_unicaen_user_role_linker PRIMARY KEY (id);
ALTER TABLE unicaen_utilisateur_user_role_linker ADD CONSTRAINT un_unicaen_user_role_linker UNIQUE (user_id, role_id);
ALTER TABLE unicaen_utilisateur_user_role_linker ADD CONSTRAINT fk_unicaen_user_role_linker_user FOREIGN KEY (user_id) REFERENCES unicaen_utilisateur_user (id) DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE unicaen_utilisateur_user_role_linker ADD CONSTRAINT fk_unicaen_user_role_linker_role FOREIGN KEY (role_id) REFERENCES unicaen_utilisateur_role (id) DEFERRABLE INITIALLY IMMEDIATE;
CREATE INDEX ix_unicaen_user_role_linker_user ON unicaen_utilisateur_user_role_linker (user_id);
CREATE INDEX ix_unicaen_user_role_linker_role ON unicaen_utilisateur_user_role_linker (role_id);


-- -----------------------------------------------------
-- TABLE unicaen_privilege_privilege_categorie
-- -----------------------------------------------------
+35 −0
Changes for sql/migration_perimetre_postgresql.sql: 35 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- Table unicaen_utilisateur_role
-- -----------------------------------------------------
ALTER SEQUENCE <seq_name> RENAME TO unicaen_utilisateur_role_id_seq;


-- -----------------------------------------------------
-- Table unicaen_utilisateur_user
-- -----------------------------------------------------
ALTER SEQUENCE <seq_name> RENAME TO unicaen_utilisateur_user_id_seq;


-- -----------------------------------------------------
-- Table unicaen_utilisateur_user_role_linker
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS unicaen_utilisateur_user_role_linker (
  id               SERIAL  PRIMARY KEY,
  user_id          INTEGER NOT NULL,
  role_id          INTEGER NOT NULL
);

WITH url(u, r) AS (
  SELECT * FROM unicaen_utilisateur_role_linker
)
INSERT INTO unicaen_utilisateur_user_role_linker (user_id, role_id)
SELECT url.u, url.r FROM url;

DROP TABLE unicaen_utilisateur_role_linker;
ALTER TABLE unicaen_utilisateur_user_role_linker ADD CONSTRAINT fk_unicaen_user_role_linker_user FOREIGN KEY (user_id) REFERENCES unicaen_utilisateur_user (id) DEFERRABLE INITIALLY IMMEDIATE;
ALTER TABLE unicaen_utilisateur_user_role_linker ADD CONSTRAINT fk_unicaen_user_role_linker_role FOREIGN KEY (role_id) REFERENCES unicaen_utilisateur_role (id) DEFERRABLE INITIALLY IMMEDIATE;
CREATE UNIQUE INDEX un_unicaen_user_role_linker ON unicaen_utilisateur_user_role_linker(user_id, role_id);
CREATE INDEX ix_unicaen_user_role_linker_user ON unicaen_utilisateur_user_role_linker (user_id);
CREATE INDEX ix_unicaen_user_role_linker_role ON unicaen_utilisateur_user_role_linker (role_id);


-- -----------------------------------------------------
-- Table unicaen_privilege_privilege_categorie
-- -----------------------------------------------------