Commit f2cbc791 authored by David Surville's avatar David Surville
Browse files

Déplacement des scripts SQL de création des tables pour l'authentification...

Déplacement des scripts SQL de création des tables pour l'authentification dans un même fichier (dépendances) et dans le module unicaen-authentification
parent 44e6043b
Loading
Loading
Loading
Loading
+255 −0
Changes for data/sql/schema_oracle.sql: 255 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- TABLE UNICAEN_ROLE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_ROLE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_ROLE (
  ID                      NUMBER(*,0)     NOT NULL,
  ROLE_ID                 VARCHAR2(64)    NOT NULL,
  LIBELLE                 VARCHAR2(255)   NOT NULL,
  IS_DEFAULT              NUMBER(1)       DEFAULT 0 NOT NULL,
  IS_AUTO                 NUMBER(1)       DEFAULT 0 NOT NULL,
  PARENT_ID               NUMBER(*,0),
  LDAP_FILTER             VARCHAR2(255),
  ACCESSIBLE_EXTERIEUR    NUMBER(1)       DEFAULT 1 NOT NULL,
  CONSTRAINT PK_UNICAEN_ROLE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_ROLE UNIQUE (ROLE_ID),
  CONSTRAINT FK_UNICAEN_ROLE_PARENT FOREIGN KEY (PARENT_ID) REFERENCES UNICAEN_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_ROLE_PARENT ON UNICAEN_ROLE (PARENT_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_UTILISATEUR_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_UTILISATEUR (
  ID                    NUMBER(*, 0)       NOT NULL,
  USERNAME              VARCHAR2(255 CHAR) NOT NULL,
  DISPLAY_NAME          VARCHAR2(255 CHAR) NOT NULL,
  EMAIL                 VARCHAR2(255 CHAR) NULL,
  PASSWORD              VARCHAR2(128 CHAR) NOT NULL,
  STATE                 SMALLINT DEFAULT 1 NOT NULL,
  PASSWORD_RESET_TOKEN  VARCHAR2(256) DEFAULT NULL,
  LAST_ROLE_ID          NUMBER(*,0),
  CONSTRAINT PK_UNICAEN_UTILISATEUR PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_UTILISATEUR_USERNAME UNIQUE (USERNAME),
  CONSTRAINT UN_UNICAEN_UTILISATEUR_PASSWORD_RESET_TOKEN UNIQUE (PASSWORD_RESET_TOKEN),
  CONSTRAINT FK_UNICAEN_UTILISATEUR_LAST_ROLE FOREIGN KEY (LAST_ROLE_ID) REFERENCES UNICAEN_ROLE(ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_UTILISATEUR_LAST_ROLE ON UNICAEN_UTILISATEUR(LAST_ROLE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PERIMETRE_CATEGORIE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PERIMETRE_CATEGORIE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_PERIMETRE_CATEGORIE (
  ID        NUMBER(*,0)         NOT NULL,
  CODE      VARCHAR2(150 CHAR)  NOT NULL,
  LIBELLE   VARCHAR2(255 CHAR)  NOT NULL,
  IS_AUTO   NUMBER(1)           DEFAULT 0 NOT NULL,
  ORDRE     INT                 DEFAULT 0,
  CONSTRAINT PK_UNICAEN_PERIMETRE_CATEGORIE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PERIMETRE_CATEGORIE_CODE UNIQUE (CODE)
);


-- -----------------------------------------------------
-- TABLE UNICAEN_PERIMETRE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PERIMETRE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_PERIMETRE (
  ID            NUMBER(*,0)         NOT NULL,
  CATEGORIE_ID  NUMBER(*,0)         NOT NULL,
  CODE          VARCHAR2(150 CHAR)  NOT NULL,
  LIBELLE       VARCHAR2(255 CHAR)  NOT NULL,
  ORDRE         INT                 DEFAULT 0,
  CONSTRAINT PK_UNICAEN_PERIMETRE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PERIMETRE_CODE UNIQUE (CATEGORIE_ID, CODE),
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PERIMETRE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE ON UNICAEN_PERIMETRE(CATEGORIE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_CATEGORIE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_PRIVILEGE_CATEGORIE (
  ID        NUMBER(*,0)         NOT NULL,
  CODE      VARCHAR2(150 CHAR)  NOT NULL,
  LIBELLE   VARCHAR2(200 CHAR)  NOT NULL,
  NAMESPACE VARCHAR(255),
  ORDRE     INT                 DEFAULT 0,
  CONSTRAINT PK_UNICAEN_PRIVILEGE_CATEGORIE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PRIVILEGE_CATEGORIE_CODE UNIQUE (CODE)
);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_PRIVILEGE_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_PRIVILEGE (
  ID           NUMBER(*, 0)       NOT NULL,
  CATEGORIE_ID NUMBER(*, 0)       NOT NULL,
  CODE         VARCHAR2(150 CHAR) NOT NULL,
  LIBELLE      VARCHAR2(200 CHAR) NOT NULL,
  ORDRE        INT                DEFAULT 0,
  CONSTRAINT PK_UNICAEN_PRIVILEGE PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_PRIVILEGE_CODE UNIQUE (CATEGORIE_ID, CODE),
  CONSTRAINT FK_UNICAEN_PRIVILEGE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_PRIVILEGE_CATEGORIE ON UNICAEN_PRIVILEGE(CATEGORIE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_ROLE_LINKER
-- -----------------------------------------------------
CREATE SEQUENCE UNICAEN_UTILISATEUR_ROLE_LINKER_ID_SEQ NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE UNICAEN_UTILISATEUR_ROLE_LINKER (
  ID                      NUMBER(*,0) NOT NULL,
  UTILISATEUR_ID          NUMBER(*,0) NOT NULL,
  ROLE_ID                 NUMBER(*,0) NOT NULL,
  PERIMETRE_ID            NUMBER(*,0),
  CONSTRAINT PK_UNICAEN_UTILISATEUR_ROLE_LINKER PRIMARY KEY (ID),
  CONSTRAINT UN_UNICAEN_UTILISATEUR_ROLE_LINKER UNIQUE (UTILISATEUR_ID, ROLE_ID, PERIMETRE_ID),
  CONSTRAINT FK_UNICAEN_UTILISATEUR_ROLE_LINKER_UTILISATEUR FOREIGN KEY (UTILISATEUR_ID) REFERENCES UNICAEN_UTILISATEUR (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_UTILISATEUR_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_UTILISATEUR_ROLE_LINKER_PERIMETRE FOREIGN KEY (PERIMETRE_ID) REFERENCES UNICAEN_PERIMETRE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_UTILISATEUR_ROLE_LINKER_UTILISATEUR ON UNICAEN_UTILISATEUR_ROLE_LINKER (UTILISATEUR_ID);
CREATE INDEX IX_UNICAEN_UTILISATEUR_ROLE_LINKER_ROLE ON UNICAEN_UTILISATEUR_ROLE_LINKER (ROLE_ID);
CREATE INDEX IX_UNICAEN_UTILISATEUR_ROLE_LINKER_PERIMETRE ON UNICAEN_UTILISATEUR_ROLE_LINKER (PERIMETRE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_ROLE_PRIVILEGE_LINKER
-- -----------------------------------------------------
CREATE TABLE UNICAEN_ROLE_PRIVILEGE_LINKER (
  ROLE_ID      NUMBER(*, 0) NOT NULL,
  PRIVILEGE_ID NUMBER(*, 0) NOT NULL,
  CONSTRAINT PK_UNICAEN_ROLE_PRIVILEGE_LINKER PRIMARY KEY (ROLE_ID, PRIVILEGE_ID),
  CONSTRAINT FK_UNICAEN_ROLE_PRIVILEGE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_ROLE_PRIVILEGE_LINKER_PRIVILEGE FOREIGN KEY (PRIVILEGE_ID) REFERENCES UNICAEN_PRIVILEGE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_ROLE_PRIVILEGE_LINKER_ROLE ON UNICAEN_ROLE_PRIVILEGE_LINKER (ROLE_ID);
CREATE INDEX IX_UNICAEN_ROLE_PRIVILEGE_LINKER_PRIVILEGE ON UNICAEN_ROLE_PRIVILEGE_LINKER (PRIVILEGE_ID);


-- DATA

INSERT INTO UNICAEN_UTILISATEUR (ID, USERNAME, EMAIL, DISPLAY_NAME, PASSWORD)
WITH tmp AS (
  SELECT 1, 'app' u, 'dsi.applications@unicaen.fr' e, 'Application' n, 'application' p FROM dual
)
SELECT UNICAEN_UTILISATEUR_ID_SEQ.nextval,
       tmp.u,
       tmp.e,
       tmp.n,
       tmp.p
FROM tmp;


INSERT INTO UNICAEN_PERIMETRE_CATEGORIE (ID, CODE, LIBELLE, IS_AUTO, ORDRE)
WITH tmp AS (
  SELECT 1, 'structure'    c, 'Structure'  l, 1  a, 1  o FROM dual
)
SELECT
  UNICAEN_PERIMETRE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.a,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT  1, 'utilisateur'  c, 'Gestion des utilisateurs' l, 1  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT 1, 1 ca, 'utilisateur_afficher'      c, 'Consulter un utilisateur'                       l, 1  o FROM dual UNION
  SELECT 2, 1 ca, 'utilisateur_ajouter'       c, 'Ajouter un utilisateur'                         l, 2  o FROM dual UNION
  SELECT 3, 1 ca, 'utilisateur_changerstatus' c, 'Changer le statut d''un utilisateur'            l, 3  o FROM dual UNION
  SELECT 4, 1 ca, 'utilisateur_modifierrole'  c, 'Modifier les rôles attribués à un utilisateur'  l, 4  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_ID_SEQ.nextval,
  tmp.ca,
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT  1, 'role'  c, 'Gestion des rôles' l, 1  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT 1, 1 ca, 'role_afficher' c, 'Consulter les rôles'  l, 1  o FROM dual UNION
  SELECT 2, 1 ca, 'role_modifier' c, 'Modifier un rôle'     l, 2  o FROM dual UNION
  SELECT 3, 1 ca, 'role_effacer'  c, 'Supprimer un rôle'    l, 3  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_ID_SEQ.nextval,
  tmp.ca,
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT  1, 'privilege'  c, 'Gestion des privilèges' l, 1  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT 1, 1 ca, 'privilege_voir'      c, 'Afficher les privilèges'  l, 1  o FROM dual UNION
  SELECT 2, 1 ca, 'privilege_ajouter'   c, 'Ajouter un privilège'     l, 2  o FROM dual UNION
  SELECT 3, 1 ca, 'privilege_modifier'  c, 'Modifier un privilège'    l, 3  o FROM dual UNION
  SELECT 4, 1 ca, 'privilege_supprimer' c, 'Supprimer un privilège'   l, 4  o FROM dual UNION
  SELECT 5, 1 ca, 'privilege_affecter'  c, 'Attribuer un privilège'   l, 5  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_ID_SEQ.nextval,
  tmp.ca,
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
  tmp.l,
  tmp.o
FROM tmp;
 No newline at end of file
+238 −0
Changes for data/sql/schema_postgresql.sql: 238 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- TABLE UNICAEN_ROLE
-- -----------------------------------------------------
CREATE TABLE UNICAEN_ROLE (
  ID                    SERIAL        PRIMARY KEY,
  ROLE_ID               VARCHAR(64)   NOT NULL,
  LIBELLE               VARCHAR(255)  NOT NULL,
  IS_DEFAULT            BOOLEAN       DEFAULT false NOT NULL,
  IS_AUTO               BOOLEAN       DEFAULT false NOT NULL,
  PARENT_ID             INTEGER,
  LDAP_FILTER           VARCHAR(255)  DEFAULT NULL::character varying,
  ACCESSIBLE_EXTERIEUR  BOOLEAN       DEFAULT true NOT NULL,
  CONSTRAINT FK_UNICAEN_ROLE_PARENT FOREIGN KEY (PARENT_ID) REFERENCES UNICAEN_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_ROLE ON UNICAEN_ROLE (ROLE_ID);
CREATE INDEX IX_UNICAEN_ROLE_PARENT ON UNICAEN_ROLE (PARENT_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR
-- -----------------------------------------------------
CREATE TABLE UNICAEN_UTILISATEUR (
  ID                    SERIAL        PRIMARY KEY,
  USERNAME              VARCHAR(255)  NOT NULL,
  DISPLAY_NAME          VARCHAR(255)  NOT NULL,
  EMAIL                 VARCHAR(255),
  PASSWORD              VARCHAR(128)  DEFAULT 'application'::character varying NOT NULL,
  STATE                 BOOLEAN       DEFAULT true NOT NULL,
  PASSWORD_RESET_TOKEN  VARCHAR(256),
  LAST_ROLE_ID          INTEGER,
  CONSTRAINT UN_UNICAEN_UTILISATEUR_USERNAME UNIQUE (USERNAME),
  CONSTRAINT UN_UNICAEN_UTILISATEUR_PASSWORD_RESET_TOKEN UNIQUE (PASSWORD_RESET_TOKEN),
  CONSTRAINT FK_UNICAEN_UTILISATEUR_LAST_ROLE FOREIGN KEY (LAST_ROLE_ID) REFERENCES UNICAEN_ROLE(ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_UTILISATEUR_USERNAME ON UNICAEN_UTILISATEUR(USERNAME);
CREATE UNIQUE INDEX UN_UNICAEN_UTILISATEUR_PASSWORD_RESET_TOKEN ON UNICAEN_UTILISATEUR(PASSWORD_RESET_TOKEN);
CREATE INDEX IX_UNICAEN_UTILISATEUR_LAST_ROLE ON UNICAEN_UTILISATEUR(LAST_ROLE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PERIMETRE_CATEGORIE
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PERIMETRE_CATEGORIE (
  ID        SERIAL              PRIMARY KEY,
  CODE      VARCHAR2(150)       NOT NULL,
  LIBELLE   VARCHAR2(255)       NOT NULL,
  IS_AUTO   BOOLEAN             DEFAULT false NOT NULL,
  ORDRE     INTEGER             DEFAULT 0
);

CREATE UNIQUE INDEX UN_UNICAEN_PERIMETRE_CATEGORIE_CODE ON UNICAEN_PERIMETRE_CATEGORIE (CODE);


-- -----------------------------------------------------
-- TABLE UNICAEN_PERIMETRE
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PERIMETRE (
  ID            SERIAL       PRIMARY KEY,
  CATEGORIE_ID  INTEGER         NOT NULL,
  CODE          VARCHAR2(150)  NOT NULL,
  LIBELLE       VARCHAR2(255)  NOT NULL,
  ORDRE         INTEGER          DEFAULT 0,
  CONSTRAINT FK_UNICAEN_PERIMETRE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PERIMETRE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_PERIMETRE_CODE ON UNICAEN_PERIMETRE(CATEGORIE_ID, CODE);
CREATE INDEX IX_UNICAEN_PERIMETRE_CATEGORIE ON UNICAEN_PERIMETRE(CATEGORIE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE_CATEGORIE
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PRIVILEGE_CATEGORIE (
  ID        SERIAL        PRIMARY KEY,
  CODE      VARCHAR(150)  NOT NULL,
  LIBELLE   VARCHAR(200)  NOT NULL,
  NAMESPACE VARCHAR(255),
  ORDRE     INTEGER       DEFAULT 0
);

CREATE UNIQUE INDEX UN_UNICAEN_PRIVILEGE_CATEGORIE_CODE ON UNICAEN_PRIVILEGE_CATEGORIE (CODE);


-- -----------------------------------------------------
-- TABLE UNICAEN_PRIVILEGE
-- -----------------------------------------------------
CREATE TABLE UNICAEN_PRIVILEGE (
  ID           SERIAL       PRIMARY KEY,
  CATEGORIE_ID INTEGER      NOT NULL,
  CODE         VARCHAR(150) NOT NULL,
  LIBELLE      VARCHAR(200) NOT NULL,
  ORDRE        INTEGER      DEFAULT 0,
  CONSTRAINT FK_UNICAEN_PRIVILEGE_CATEGORIE FOREIGN KEY (CATEGORIE_ID) REFERENCES UNICAEN_PRIVILEGE_CATEGORIE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_PRIVILEGE_CODE ON UNICAEN_PRIVILEGE(CATEGORIE_ID, CODE);
CREATE INDEX IX_UNICAEN_PRIVILEGE_CATEGORIE ON UNICAEN_PRIVILEGE(CATEGORIE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_ROLE_LINKER
-- -----------------------------------------------------
CREATE TABLE UNICAEN_UTILISATEUR_ROLE_LINKER (
  ID              SERIAL  PRIMARY KEY,
  UTILISATEUR_ID  INTEGER NOT NULL,
  ROLE_ID         INTEGER NOT NULL,
  PERIMETRE_ID    INTEGER NOT NULL,
  CONSTRAINT FK_UNICAEN_UTILISATEUR_ROLE_LINKER_UTILISATEUR FOREIGN KEY (UTILISATEUR_ID) REFERENCES UNICAEN_UTILISATEUR (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_UTILISATEUR_ROLE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_UTILISATEUR_ROLE_LINKER_ROLE FOREIGN KEY (PERIMETRE_ID) REFERENCES UNICAEN_PERIMETRE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_UTILISATEUR_ROLE_LINKER ON UNICAEN_UTILISATEUR_ROLE_LINKER (UTILISATEUR_ID, ROLE_ID, PERIMETRE_ID);
CREATE INDEX IX_UNICAEN_UTILISATEUR_ROLE_LINKER_UTILISATEUR ON UNICAEN_UTILISATEUR_ROLE_LINKER (UTILISATEUR_ID);
CREATE INDEX IX_UNICAEN_UTILISATEUR_ROLE_LINKER_ROLE ON UNICAEN_UTILISATEUR_ROLE_LINKER (ROLE_ID);
CREATE INDEX IX_UNICAEN_UTILISATEUR_ROLE_LINKER_PERIMETRE ON UNICAEN_UTILISATEUR_ROLE_LINKER (PERIMETRE_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_ROLE_PRIVILEGE_LINKER
-- -----------------------------------------------------
CREATE TABLE UNICAEN_ROLE_PRIVILEGE_LINKER (
  ROLE_ID      INTEGER  NOT NULL,
  PRIVILEGE_ID INTEGER  NOT NULL,
  CONSTRAINT PK_UNICAEN_ROLE_PRIVILEGE_LINKER PRIMARY KEY (ROLE_ID, PRIVILEGE_ID),
  CONSTRAINT FK_UNICAEN_ROLE_PRIVILEGE_LINKER_ROLE FOREIGN KEY (ROLE_ID) REFERENCES UNICAEN_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE,
  CONSTRAINT FK_UNICAEN_ROLE_PRIVILEGE_LINKER_PRIVILEGE FOREIGN KEY (PRIVILEGE_ID) REFERENCES UNICAEN_PRIVILEGE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX IX_UNICAEN_ROLE_PRIVILEGE_LINKER_ROLE ON UNICAEN_ROLE_PRIVILEGE_LINKER (ROLE_ID);
CREATE INDEX IX_UNICAEN_ROLE_PRIVILEGE_LINKER_PRIVILEGE ON UNICAEN_ROLE_PRIVILEGE_LINKER (PRIVILEGE_ID);


-- DATA

INSERT INTO UNICAEN_UTILISATEUR (ID, USERNAME, EMAIL, DISPLAY_NAME, PASSWORD)
WITH tmp AS (
  SELECT 1, 'app' u, 'dsi.applications@unicaen.fr'  e, 'Application'  n, 'application' p FROM dual
)
SELECT
  UNICAEN_UTILISATEUR_ID_SEQ.nextval,
  tmp.u,
  tmp.e,
  tmp.n,
  tmp.p
FROM tmp;

INSERT INTO UNICAEN_PERIMETRE_CATEGORIE (ID, CODE, LIBELLE, IS_AUTO, ORDRE)
WITH tmp AS (
  SELECT 1, 'structure'    c, 'Structure'  l, 1  a, 1  o FROM dual
)
SELECT
  UNICAEN_PERIMETRE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.a,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT  1, 'utilisateur'  c, 'Gestion des utilisateurs' l, 1  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT 1, 1 ca, 'utilisateur_afficher'      c, 'Consulter un utilisateur'                       l, 1  o FROM dual UNION
  SELECT 2, 1 ca, 'utilisateur_ajouter'       c, 'Ajouter un utilisateur'                         l, 2  o FROM dual UNION
  SELECT 3, 1 ca, 'utilisateur_changerstatus' c, 'Changer le statut d''un utilisateur'            l, 3  o FROM dual UNION
  SELECT 4, 1 ca, 'utilisateur_modifierrole'  c, 'Modifier les rôles attribués à un utilisateur'  l, 4  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_ID_SEQ.nextval,
  tmp.ca,
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT  1, 'role'  c, 'Gestion des rôles' l, 1  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT 1, 1 ca, 'role_afficher' c, 'Consulter les rôles'  l, 1  o FROM dual UNION
  SELECT 2, 1 ca, 'role_modifier' c, 'Modifier un rôle'     l, 2  o FROM dual UNION
  SELECT 3, 1 ca, 'role_effacer'  c, 'Supprimer un rôle'    l, 3  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_ID_SEQ.nextval,
  tmp.ca,
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE_CATEGORIE (ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT  1, 'privilege'  c, 'Gestion des privilèges' l, 1  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.nextval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO UNICAEN_PRIVILEGE (ID, CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH tmp AS (
  SELECT 1, 1 ca, 'privilege_voir'      c, 'Afficher les privilèges'  l, 1  o FROM dual UNION
  SELECT 2, 1 ca, 'privilege_ajouter'   c, 'Ajouter un privilège'     l, 2  o FROM dual UNION
  SELECT 3, 1 ca, 'privilege_modifier'  c, 'Modifier un privilège'    l, 3  o FROM dual UNION
  SELECT 4, 1 ca, 'privilege_supprimer' c, 'Supprimer un privilège'   l, 4  o FROM dual UNION
  SELECT 5, 1 ca, 'privilege_affecter'  c, 'Attribuer un privilège'   l, 5  o FROM dual
)
SELECT
  UNICAEN_PRIVILEGE_ID_SEQ.nextval,
  tmp.ca,
  UNICAEN_PRIVILEGE_CATEGORIE_ID_SEQ.currval,
  tmp.l,
  tmp.o
FROM tmp;
 No newline at end of file