Skip to content
Snippets Groups Projects
Commit 84a802e2 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Mise à jour des scripts SQL et de la doc

parent 21bd4e1b
No related branches found
No related tags found
No related merge requests found
Créer/lancer une bdd à partir d'un dump SQL
===========================================
- Mettez le fichier de dump SQL dans le répertoire `./tmp/sql` et assurez-vous qu'il a l'extension `.sql`.
- Préliminaires :
- Trouvez dans le dump le nom du user attendu :
```bash
TARGET_DIR=/tmp/sygal-db
mkdir ${TARGET_DIR}
mkdir ${TARGET_DIR}/sql
mkdir ${TARGET_DIR}/sql/admin
```
- Exemple de dump d'une base de prod nommée "sygal" en vue de créer une base de développement :
```bash
grep -Ens "OWNER TO" ./tmp/sql/* | head -n 1
PGPASSWORD='xxxxxx' pg_dump -h localhost -p 5432 -d "sygal" -U "sygal" > ${TARGET_DIR}/sql/sygal_prod_dump.sql
```
- Créez le sous-répertoire `./tmp/sql/admin` et copiez-y le script de création de la bdd :
NB : le dump doit avoir l'extension `.sql`.
- Cherchez dans le dump si des instructions "OWNER TO" font référence à un user particulier :
```bash
mkdir -p ./tmp/sql/admin
cp ./docker/sql/admin/01_create_db_user.sql ./tmp/sql/admin/
grep -Ens "OWNER TO" ${TARGET_DIR}/sql/* | head -n 1
```
- Lancer le container en adaptant `--env SYGAL_USER=ad_sygal` au user trouvé précédemment :
Si un user est mentionné, c'est lui qui devra être spécifié au moment du `docker run` pour qu'il soit
créé dans la base de données (cf. plus bas).
L'autre solution est de modifier le user DANS le dump s'il ne vous convient pas.
- Copiez le script de création de la bdd et du user :
```bash
cp ./docker/sql/admin/01_create_db_user.sql ${TARGET_DIR}/sql/admin/
```
- Lancer le container en adaptant `--env SYGAL_USER=sygal` au user trouvé précédemment :
```bash
docker run \
......@@ -24,15 +43,16 @@ docker run \
--env POSTGRES_USER=postgres \
--env POSTGRES_PASSWORD=admin \
--env SYGAL_DB=sygal \
--env SYGAL_USER=ad_sygal \
--env SYGAL_USER=sygal \
--env SYGAL_PASSWORD=azerty \
--publish 5432:5432 \
--volume $PWD/tmp/sql/:/sql \
--volume $PWD/tmp/db:/var/lib/postgresql/data \
--volume ${TARGET_DIR}/sql/:/sql \
--volume ${TARGET_DIR}/db:/var/lib/postgresql/data \
sygal-db-image
```
Au 1er lancement, si aucune bdd n'est déjà persistée dans le répertoire `./tmp/db`, les scripts SQL sont exécutés :
la bdd est créée.
Au 1er lancement, si aucune bdd n'est déjà persistée dans le répertoire `${TARGET_DIR}/db`, les scripts SQL sont
exécutés : la bdd est créée.
Aux lancements suivants, la bdd existe dans le répertoire donc les scripts ne sont pas exécutés.
Pour que la bdd soit re-créée, il faut supprimer le répertoire `./tmp/db`.
SyGAL Database Image
====================
Ce projet est une image Docker rassemblant le nécessaire pour créer (le cas échéant) et de lancer une base de données
Ce projet est une image Docker rassemblant le nécessaire pour créer (le cas échéant) et lancer une base de données
pour l'application ESUP-SyGAL.
......
......@@ -17,4 +17,4 @@ services:
- "5432:5432"
volumes:
#- ./docker/db/sql/:/sql # répertoire des scripts de création de la bdd
- ./data/db:/var/lib/postgresql/data # répertoire de où la bdd est persistée
- ./data/db:/var/lib/postgresql/data # répertoire où la bdd est persistée
This diff is collapsed.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -2,6 +2,34 @@
-- PREPARATION des données insérées.
--
-- Suppression des données dont l'utilisateur créateur/modificateur n'existera pas dans la nouvelle base :
delete from soutenance_etat where histo_createur_id <> 1 or histo_modificateur_id <> 1; -- 1 = SyGAL
--
-- Dans certaines tables, on supprime les données dont l'auteur n'existe pas dans une bdd neuve.
--
delete from soutenance_etat where histo_createur_id <> 1 or histo_modificateur_id <> 1; -- 1 = pseudo-utilisateur SyGAL
delete from soutenance_qualite where histo_createur_id <> 1 or histo_modificateur_id <> 1;
--
-- Dans certaines tables, on écrase l'auteur avec celui par défaut.
--
update soutenance_etat set histo_createur_id = 1,
histo_creation = default,
histo_modificateur_id = null,
histo_modification = null;
update soutenance_qualite set histo_createur_id = 1,
histo_creation = default,
histo_modificateur_id = null,
histo_modification = null;
update formation_enquete_categorie set histo_createur_id = 1,
histo_creation = default,
histo_modificateur_id = null,
histo_modification = null;
update formation_enquete_question set histo_createur_id = 1,
histo_creation = default,
histo_modificateur_id = null,
histo_modification = null;
update pays set histo_createur_id = 1,
histo_creation = default,
histo_modificateur_id = null,
histo_modification = null;
This diff is collapsed.
......@@ -9,7 +9,8 @@ select
nextval('structure_id_seq'), 'COMUE',
'', --> sigle ou abbréviation à personnaliser
'', --> libellé à personnaliser
null, 1, 'COMUE', 1, 1
1, 1, 'COMUE', 1, 1
from type_structure ts
where 0 = 1
;
......
--
-- Collège des écoles doctorales (CED) éventuel.
--
-- NB : Ce script crée un CED *uniquement si* vous l'avez demandé dans la config de préparation des scripts.
--
insert into structure (id, source_code, code, sigle, libelle,
type_structure_id, source_id, histo_createur_id)
select nextval('structure_id_seq'), 'CED', 'CED',
'', --> sigle ou abbréviation à personnaliser
'', --> libellé à personnaliser
1, 1, 1
from type_structure ts
where 0 = 1
;
insert into etablissement (id, structure_id, source_id, source_code, est_ced, histo_createur_id)
select nextval('etablissement_id_seq'), s.id, 1, 'CED', true, 1
from structure s
where s.source_code = 'CED'
;
--
-- INITIALISATIONS de données.
--
-- Attention, ce sript doit être adapté à l'établissement d'installation :
--
-- 'UCN' : code unique identifiant l'établissement, ex: 'UNILIM'
-- 'Unicaen' : sigle ou libellé court de l'établissement, ex: 'Unilim'
-- 'Université de Caen Normandie' : libellé complet de l'établissement, ex: 'Université de Limoges'
-- 'unicaen.fr' : domaine de l'établissement, ex: 'unilim.fr'
-- 'sygal-assistance@univ.fr' : Adresse électronique d'assistance
-- 'sygal-scd@univ.fr' : Adresse électronique par les aspects Bibliothèque
-- 'sygal-doctorat@univ.fr' : Adresse électronique par les aspects Doctorat
--
--
-- Création de l'établissement.
--
-- 1/ STRUCTURE
--
insert into structure (id, type_structure_id,
source_code, source_id,
code, sigle, libelle,
histo_createur_id, histo_modificateur_id)
select
nextval('structure_id_seq'), 1, 'UCN', 1,
'UCN', 'Unicaen', 'Université de Caen Normandie',
1, 1
;
--
-- 2/ ETABLISSEMENT
--
insert into etablissement (id, structure_id, domaine, source_code, source_id,
est_comue, est_membre, est_etab_inscription,
email_assistance, email_bibliotheque, email_doctorat,
histo_createur_id, histo_modificateur_id)
select
nextval('etablissement_id_seq'), s.id, 'unicaen.fr', 'UCN', 1,
false, true, true,
'sygal-assistance@univ.fr', 'sygal-scd@univ.fr', 'sygal-doctorat@univ.fr',
1, 1
from structure s
where s.source_code = 'UCN'
;
--
-- Création des sources de données importables, ex: Apogée.
--
delete from source where code <> 'SYGAL::sygal'
;
insert into source (id, code, libelle, importable, etablissement_id)
select 2, source_code||'::apogee', 'Apogée '||source_code, true, id
from etablissement
where source_code = 'UCN'
and '1' = '1'
;
insert into source (id, code, libelle, importable, etablissement_id)
select 3, source_code||'::physalis', 'Physalis '||source_code, true, id
from etablissement
where source_code = 'UCN'
and '0' = '1'
;
--
-- Rôles par établissement.
--
insert into role (
id,
code,
libelle,
source_code,
source_id,
role_id,
these_dep,
histo_createur_id,
histo_modificateur_id,
structure_id,
type_structure_dependant_id
)
with tmp(code, libelle, these_dep) as (
select 'ADMIN', 'Administrateur', false union
select 'MDD', 'Maison du doctorat', false union
select 'BU', 'Bibliothèque universitaire', false union
select 'DOCTORANT', 'Doctorant', true
)
select
nextval('role_id_seq'),
tmp.code,
tmp.libelle,
s.source_code || '::' || tmp.code,
1,
tmp.libelle || ' ' || s.source_code,
tmp.these_dep,
1,
1,
s.id,
1
from tmp, structure s
where s.source_code = 'UCN'
;
--
-- Accord de tous les privilèges au rôle ADMIN_TECH.
--
insert into profil_privilege(profil_id, privilege_id)
select pro.id, pri.id
from profil pro,
privilege pri
where pro.role_id = 'ADMIN_TECH'
and not exists(select * from profil_privilege where profil_id = pro.id and privilege_id = pri.id)
;
insert into role_privilege(role_id, privilege_id)
select r.id, pri.id
from role r,
privilege pri
where r.code = 'ADMIN_TECH'
and not exists(select * from role_privilege where role_id = r.id and privilege_id = pri.id)
;
insert into profil_to_role(profil_id, role_id)
select pro.id, r.id
from profil pro,
role r
where pro.role_id = 'ADMIN_TECH'
and r.code = 'ADMIN_TECH'
and not exists(select * from profil_to_role where profil_id = pro.id and role_id = r.id)
;
--
-- Peuplement des VM.
--
refresh materialized view mv_recherche_these;
--
-- DONNÉES DE TEST.
--
--
-- Création de l'individu/utilisateur de test
--
insert into individu (id, civilite, nom_usuel, nom_patronymique, prenom1, email, source_code, supann_id, source_id, histo_createur_id, histo_modificateur_id)
select nextval('individu_id_seq'),
'M.',
'Premier',
'Premier',
'François',
'francois.premier@unicaen.fr',
'INCONNU::00012345',
'00012345',
1, 1, 1
;
insert into utilisateur (id, username, email, display_name, password, individu_id)
select nextval('utilisateur_id_seq'),
'premierf@unicaen.fr', -- du genre EPPN (si shibboleth activé) ou supannAliasLogin (si LDAP activé)
'francois.premier@unicaen.fr',
'François PREMIER',
'shib', -- 'shib' (si authentification shibboleth), ou 'ldap' (si auth LDAP), ou mdp bcrypté (si auth BDD locale)
i.id
from individu i
where i.source_code = 'INCONNU::00012345'
;
--
-- /!\ Attribution du rôle Admin tech à l'utilisateur de test !!
--
insert into individu_role(id, individu_id, role_id)
select nextval('individu_role_id_seq'), i.id, r.id
from individu i, role r
where i.source_code = 'INCONNU::00012345'
and r.source_code = 'ADMIN_TECH'
;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment