Commit 5a8f277c authored by David Surville's avatar David Surville
Browse files

Réintégration des scripts SQL

parent 665d5f71
Loading
Loading
Loading
Loading

sql/schema_oracle.sql

0 → 100644
+131 −0
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- Table unicaen_utilisateur_role
-- -----------------------------------------------------
CREATE SEQUENCE unicaen_utilisateur_role_id_seq NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE unicaen_utilisateur_role (
  id                      NUMBER(*,0)     NOT NULL,
  role_id                 VARCHAR2(64)    NOT NULL,
  libelle                 VARCHAR2(255)   NOT NULL,
  description             CLOB            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,
  displayed               NUMBER(1)       DEFAULT 1 NOT NULL,
  CONSTRAINT pk_unicaen_role PRIMARY KEY (id),
  CONSTRAINT un_unicaen_role_role UNIQUE (role_id),
  CONSTRAINT fk_unicaen_role_parent FOREIGN KEY (parent_id) REFERENCES unicaen_utilisateur_role (id) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX ix_unicaen_role_parent ON unicaen_utilisateur_role (parent_id);


-- -----------------------------------------------------
-- Table unicaen_utilisateur_user
-- -----------------------------------------------------
CREATE SEQUENCE unicaen_utilisateur_user_id_seq NOCYCLE START WITH 1 INCREMENT BY 1 MINVALUE 0;

CREATE TABLE unicaen_utilisateur_user (
  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_user PRIMARY KEY (id),
  CONSTRAINT un_unicaen_user_username UNIQUE (username),
  CONSTRAINT un_unicaen_user_password_reset_token UNIQUE (password_reset_token),
  CONSTRAINT fk_unicaen_user_last_role FOREIGN KEY (last_role_id) REFERENCES unicaen_utilisateur_role(id) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE INDEX ix_unicaen_user_last_role ON unicaen_utilisateur_user (last_role_id);


-- -----------------------------------------------------
-- 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,
  CONSTRAINT pk_unicaen_user_role_linker PRIMARY KEY (id),
  CONSTRAINT un_unicaen_user_role_linker UNIQUE (user_id, role_id),
  CONSTRAINT fk_unicaen_user_role_linker_user FOREIGN KEY (user_id) REFERENCES unicaen_utilisateur_user (id) DEFERRABLE INITIALLY IMMEDIATE,
  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);


-- DATA

INSERT INTO unicaen_utilisateur_user (id, username, email, display_name, password)
WITH tmp AS (
  SELECT 1, 'app' u, 'dsi.applications@unicaen.fr' e, 'Application' n, 'db' p FROM dual
)
SELECT unicaen_utilisateur_id_seq.nextval,
       tmp.u,
       tmp.e,
       tmp.n,
       tmp.p
FROM tmp;

INSERT INTO unicaen_privilege_privilege_categorie (id, code, libelle, namespace, ordre)
WITH tmp AS (
  SELECT  1, 'utilisateur'  c, 'Gestion des utilisateurs' l, 'UnicaenUtilisateur\Provider\Privilege'  n, 1  o FROM dual
)
SELECT
  unicaen_privilege_privilege_categorie_id_seq.nextval,
  tmp.c,
  tmp.l,
  tmp.n,
  tmp.o
FROM tmp;

INSERT INTO unicaen_privilege_privilege (id, categorie_id, code, libelle, ordre)
WITH tmp AS (
  SELECT 1, 1 ca, 'utilisateur_afficher'      c, 'Rechercher et 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_privilege_id_seq.nextval,
  unicaen_privilege_privilege_categorie_id_seq.currval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;

INSERT INTO unicaen_privilege_privilege_categorie (id, code, libelle, namespace, ordre)
WITH tmp AS (
  SELECT  1, 'role'  c, 'Gestion des rôles' l, 'UnicaenUtilisateur\Provider\Privilege'  n, 2  o FROM dual
)
SELECT
  unicaen_privilege_privilege_categorie_id_seq.nextval,
  tmp.c,
  tmp.l,
  tmp.n,
  tmp.o
FROM tmp;

INSERT INTO unicaen_privilege_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_privilege_id_seq.nextval,
  unicaen_privilege_privilege_categorie_id_seq.currval,
  tmp.c,
  tmp.l,
  tmp.o
FROM tmp;
 No newline at end of file
+108 −0
Original line number Diff line number Diff line
-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_ROLE
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS UNICAEN_UTILISATEUR_ROLE (
  ID                    SERIAL        PRIMARY KEY,
  ROLE_ID               VARCHAR(64)   NOT NULL,
  LIBELLE               VARCHAR(255)  NOT NULL,
  DESCRIPTION           TEXT          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,
  DISPLAYED             BOOLEAN       DEFAULT true NOT NULL,
  CONSTRAINT FK_UNICAEN_ROLE_PARENT FOREIGN KEY (PARENT_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE (ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_ROLE_ROLE ON UNICAEN_UTILISATEUR_ROLE (ROLE_ID);
CREATE INDEX IX_UNICAEN_ROLE_PARENT ON UNICAEN_UTILISATEUR_ROLE (PARENT_ID);


-- -----------------------------------------------------
-- TABLE UNICAEN_UTILISATEUR_USER
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS UNICAEN_UTILISATEUR_USER (
  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 FK_UNICAEN_USER_LAST_ROLE FOREIGN KEY (LAST_ROLE_ID) REFERENCES UNICAEN_UTILISATEUR_ROLE(ID) DEFERRABLE INITIALLY IMMEDIATE
);

CREATE UNIQUE INDEX UN_UNICAEN_USER_USERNAME ON UNICAEN_UTILISATEUR_USER(USERNAME);
CREATE UNIQUE INDEX UN_UNICAEN_USER_PASSWORD_RESET_TOKEN ON UNICAEN_UTILISATEUR_USER(PASSWORD_RESET_TOKEN);
CREATE INDEX IX_UNICAEN_USER_LAST_ROLE ON UNICAEN_UTILISATEUR_USER(LAST_ROLE_ID);


-- -----------------------------------------------------
-- 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,
  CONSTRAINT FK_UNICAEN_USER_ROLE_LINKER_USER FOREIGN KEY (USER_ID) REFERENCES UNICAEN_UTILISATEUR_USER (ID) DEFERRABLE INITIALLY IMMEDIATE,
  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_UTILISATEUR_ROLE_LINKER_USER ON UNICAEN_UTILISATEUR_USER_ROLE_LINKER (USER_ID);
CREATE INDEX IX_UNICAEN_UTILISATEUR_ROLE_LINKER_ROLE ON UNICAEN_UTILISATEUR_USER_ROLE_LINKER (ROLE_ID);


-- DATA

INSERT INTO unicaen_utilisateur_user (
  username,
  email,
  display_name,
  password)
VALUES
  ('app', 'dsi.applications@unicaen.fr', 'Application', 'db');


INSERT INTO unicaen_privilege_privilege_categorie (code, libelle, namespace, ordre)
VALUES
  ('utilisateur', 'Gestion des utilisateurs', 'UnicaenUtilisateur\Provider\Privilege',  1),
  ('role',        'Gestion des rôles',        'UnicaenUtilisateur\Provider\Privilege',  2),
ON CONFLICT (code) DO
  UPDATE SET
    libelle=excluded.libelle,
    namespace=excluded.namespace,
    ordre=excluded.ordre;


WITH d(code, lib, ordre) AS (
  SELECT 'utilisateur_afficher',      'Consulter un utilisateur',                       1 UNION
  SELECT 'utilisateur_ajouter',       'Ajouter un utilisateur',                         2 UNION
  SELECT 'utilisateur_changerstatus', 'Changer le statut d''un utilisateur',            3 UNION
  SELECT 'utilisateur_modifierrole',  'Modifier les rôles attribués à un utilisateur',  4
)
INSERT INTO unicaen_privilege_privilege(categorie_id, code, libelle, ordre)
  SELECT cp.id, d.code, d.lib, d.ordre
  FROM d
    JOIN unicaen_privilege_privilege_categorie cp ON cp.CODE = 'utilisateur'
  ON CONFLICT (categorie_id, code) DO
    UPDATE SET
      libelle=excluded.libelle,
      ordre=excluded.ordre;


WITH d(code, lib, ordre) AS (
  SELECT 'role_afficher', 'Consulter les rôles',  1 UNION
  SELECT 'role_modifier', 'Modifier un rôle',     2 UNION
  SELECT 'role_effacer',  'Supprimer un rôle',    3
)
INSERT INTO unicaen_privilege_privilege(categorie_id, code, libelle, ordre)
  SELECT cp.id, d.code, d.lib, d.ordre
  FROM d
    JOIN unicaen_privilege_privilege_categorie cp ON cp.CODE = 'role'
  ON CONFLICT (categorie_id, code) DO
    UPDATE SET
      libelle=excluded.libelle,
      ordre=excluded.ordre;
 No newline at end of file