Loading .gitignore 0 → 100644 +1 −0 Original line number Diff line number Diff line .idea/ README.md 0 → 100644 +5 −0 Original line number Diff line number Diff line # Documentation - [Initialisation de la base de données](database/README.md) - [Ligne de commande](cli.md) bin/README.md 0 → 100644 +23 −0 Original line number Diff line number Diff line # bin ## [generate-database-scripts.sh](generate-database-scripts.sh) Ce script doit être utilisé pour générer une partie des scripts SQL nécessaires à l'installation de la base de données de SyGAL *de zéro*. Les scripts générés dans le répertoire temporaire `/tmp/sygal-doc/database` sont les suivants : - `00-oracle-clear-schema-SYGAL.sql` - `00-oracle-generate-schema-SYGAL.sql` - `02-inserts/oracle-data-insert-from-SYGAL.*-into-SYGAL.sql` - `03-oracle-generate-ref-constraints-SYGAL.sql` Les autres scripts gérés, eux, à la main sont : - [`01-bootstrap.sql`](../database/01-bootstrap.sql) - [`04-crea-comue.sql`](../database/04-crea-comue.sql) - [`05-init.sql`](../database/05-init.sql) Usage : ```bash ./generate-database-scripts.sh ``` bin/generate-database-scripts.sh 0 → 100755 +102 −0 Original line number Diff line number Diff line #!/usr/bin/env bash echo " #################################################################################################### # # Génération d'une partie des scripts SQL permettant de créer de zéro la base de données de SyGAL # ####################################################################################################" THIS_DIR=$(cd `dirname $0` && pwd) # répertoire de destination des résultats OUTPUT_DIR=/tmp/sygal-doc/database [[ -d ${OUTPUT_DIR} ]] && echo "Le répertoire de destination existe déjà : ${OUTPUT_DIR}" && exit 1 mkdir -p ${OUTPUT_DIR} # fonction remplaçant 'SYGAL.' par '/*SYGAL.*/' et '"SYGAL".' par '/*"SYGAL".*/' dans le fichier spécifié commentPrefixInFile() { sed -i 's/\(SYGAL\.\)/\/*\1*\//ig' $1 sed -i 's/\("SYGAL"\.\)/\/*\1*\//ig' $1 } # fonction remplaçant par exemple "/*HISTO::*/1234" par "$2/*SUBSTIT*/" dans le fichier spécifié en $1 replaceHistoIdInFile() { sed -i "s/\/\*HISTO::\*\/[0-9]\+/$2\/\*SUBSTIT\*\//ig" $1 } echo ########################################################################## # Script de vidage de la bdd existante ##########################################################################" FROM_FILE_PATH="/tmp/oracle-clear-schema-SYGAL.sql" TO_FILE_PATH="${OUTPUT_DIR}/00-oracle-clear-schema-SYGAL.sql" docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-script-for-schema-clearing \ --connection=doctrine.connection.orm_default && \ docker cp sygal-container:${FROM_FILE_PATH} ${TO_FILE_PATH} && \ commentPrefixInFile ${TO_FILE_PATH} && \ echo ########################################################################### # Script de création des objets de la bdd, sans les contraintes de réf ###########################################################################" FROM_FILE_PATH="/tmp/oracle-generate-schema-SYGAL-from-SYGAL.sql" TO_FILE_PATH="${OUTPUT_DIR}/00-oracle-generate-schema-SYGAL.sql" docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-script-for-schema-creation \ --src-connection=doctrine.connection.orm_default \ --dst-connection=doctrine.connection.orm_default \ --ref-constraints-included=0 && \ docker cp sygal-container:${FROM_FILE_PATH} ${TO_FILE_PATH} && \ commentPrefixInFile ${TO_FILE_PATH} && \ sed -i 's/\(START WITH [0-9]\+\)/\/*\1*\//ig; s/\(CACHE [0-9]\+\)/\/*\1*\//ig' \ ${TO_FILE_PATH} echo ########################################################################### # Scripts d'insertions de données ###########################################################################" FROM_FILE_PATH="/tmp/inserts" TO_FILE_PATH="${OUTPUT_DIR}/02-inserts" TABLES="CATEGORIE_PRIVILEGE,DOMAINE_SCIENTIFIQUE,IMPORT_OBSERV,INFORMATION,NATURE_FICHIER,PRIVILEGE,PROFIL,PROFIL_PRIVILEGE,TYPE_STRUCTURE,TYPE_VALIDATION,VERSION_FICHIER,WF_ETAPE" HISTO_ID_SUBSTIT=1 # valeur forcée pour les colonnes d'historique echo "FROM=${FROM_FILE_PATH} TO=${TO_FILE_PATH}" rm -rf ${TO_FILE_PATH} && mkdir -p ${TO_FILE_PATH} && \ docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-scripts-for-data-inserts \ --src-connection=doctrine.connection.orm_default \ --dst-connection=doctrine.connection.orm_default \ --tables=${TABLES} \ --output-dir=${FROM_FILE_PATH} && \ docker cp sygal-container:${FROM_FILE_PATH}/. ${TO_FILE_PATH} && \ for f in ${TO_FILE_PATH}/*; do commentPrefixInFile ${f}; replaceHistoIdInFile ${f} ${HISTO_ID_SUBSTIT}; done echo ########################################################################### # Script de création des contraintes de références ###########################################################################" FROM_FILE_PATH="/tmp/oracle-generate-ref-constraints-SYGAL-from-SYGAL.sql" TO_FILE_PATH="${OUTPUT_DIR}/03-oracle-generate-ref-constraints-SYGAL.sql" docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-script-for-ref-constraints-creation \ --src-connection=doctrine.connection.orm_default \ --dst-connection=doctrine.connection.orm_default && \ docker cp sygal-container:${FROM_FILE_PATH} ${TO_FILE_PATH} && \ commentPrefixInFile ${TO_FILE_PATH} echo echo "> Terminé." echo "> Résultat dans ${OUTPUT_DIR}." cli.md 0 → 100644 +93 −0 Original line number Diff line number Diff line # Ligne de commande de SyGAL Pour afficher l'aide de toutes les commandes fournies par l'application, se placer à la racine du projet et faire : $ php public/index.php ## Import En fait, on peut désigner par "import" l'enchainement des actions suivantes : - "importer" les données d'un établissement, càd : - interroger le WS d'un établissement (projet "sygal-import-ws") ; - enregistrer les données reçues dans des tables temporaires `TMP_*` ; - "synchroniser" les tables définitives à partir des tables temporaires (module "unicaen/import"). ### Les services disponibles Les données importées sont fractionnées en domaines ou "services", qui reflètent en réalité chacun une table dans la base de données de l'application. Voici les codes des services existants : - structure - ecole-doctorale - unite-recherche - etablissement - individu - doctorant - these - role - acteur - variable - financement - titre-acces Lorsqu'on importe les écoles doctorales, on référence le service dont le code est `ecole-doctorale`. C'est ce code du service qui devra être spécifié via l'argument `--etablissement` des commandes présentées ici. ### Commandes d'import L'import se fait pour *un seul établissement à la fois*. Les établissements dont on veut importer les données doivent être déclarés dans la config PHP de l'appli : cf. [local.php.dist](../config/autoload/local.php.dist) C'est le "code établissement" choisi dans la config qui devra être spécifié via l'argument `--etablissement` des commandes présentées ici. #### `import` On parle ici de lancer l'import d'un service précis. Par exemple, pour lancer l'import des variables de l'UCN, mais sans lancer la synchro des tables définitives : $ php public/index.php import --service=variable --etablissement=UCN --synchronize=0 Pour lancer en plus la synchro après l'interrogation du WS, mettre `--synchronize=1`. #### `import-all` Cette commande lance l'import de tous les services. Par exemple, pour lancer l'import complet des données de l'UCN, sans lancer la synchro des tables définitives : $ php public/index.php import-all --etablissement=UCN --synchronize=0 Pour que la synchro se fasse après l'interrogation du WS, mettre `--synchronize=1`. ### Commandes de synchro On parle ici de synchroniser les données des tables définitives de l'application avec celles des tables temporaires `TMP_*`. Même s'il s'agit de tables, on raisonne tout de même en service. Par exemple, la synchronisation de la table des unités de recherches (`UNITE_RECH`) se fait en spécifiant le code de service `unite-recherche`. Dans ces commandes, il n'est pas possible de spécifier un établissement précis. #### `synchronize` Cette commande lance la synchro d'une table définitive `TABLE` à partir de la table temporaire `TMP_TABLE` correspondante. Par exemple, pour lancer la synchro des variables : $ php public/index.php synchronize --service=variable #### `synchronize-all` Cette commande lance la synchro de toutes les tables définitives : $ php public/index.php synchronize-all Loading
README.md 0 → 100644 +5 −0 Original line number Diff line number Diff line # Documentation - [Initialisation de la base de données](database/README.md) - [Ligne de commande](cli.md)
bin/README.md 0 → 100644 +23 −0 Original line number Diff line number Diff line # bin ## [generate-database-scripts.sh](generate-database-scripts.sh) Ce script doit être utilisé pour générer une partie des scripts SQL nécessaires à l'installation de la base de données de SyGAL *de zéro*. Les scripts générés dans le répertoire temporaire `/tmp/sygal-doc/database` sont les suivants : - `00-oracle-clear-schema-SYGAL.sql` - `00-oracle-generate-schema-SYGAL.sql` - `02-inserts/oracle-data-insert-from-SYGAL.*-into-SYGAL.sql` - `03-oracle-generate-ref-constraints-SYGAL.sql` Les autres scripts gérés, eux, à la main sont : - [`01-bootstrap.sql`](../database/01-bootstrap.sql) - [`04-crea-comue.sql`](../database/04-crea-comue.sql) - [`05-init.sql`](../database/05-init.sql) Usage : ```bash ./generate-database-scripts.sh ```
bin/generate-database-scripts.sh 0 → 100755 +102 −0 Original line number Diff line number Diff line #!/usr/bin/env bash echo " #################################################################################################### # # Génération d'une partie des scripts SQL permettant de créer de zéro la base de données de SyGAL # ####################################################################################################" THIS_DIR=$(cd `dirname $0` && pwd) # répertoire de destination des résultats OUTPUT_DIR=/tmp/sygal-doc/database [[ -d ${OUTPUT_DIR} ]] && echo "Le répertoire de destination existe déjà : ${OUTPUT_DIR}" && exit 1 mkdir -p ${OUTPUT_DIR} # fonction remplaçant 'SYGAL.' par '/*SYGAL.*/' et '"SYGAL".' par '/*"SYGAL".*/' dans le fichier spécifié commentPrefixInFile() { sed -i 's/\(SYGAL\.\)/\/*\1*\//ig' $1 sed -i 's/\("SYGAL"\.\)/\/*\1*\//ig' $1 } # fonction remplaçant par exemple "/*HISTO::*/1234" par "$2/*SUBSTIT*/" dans le fichier spécifié en $1 replaceHistoIdInFile() { sed -i "s/\/\*HISTO::\*\/[0-9]\+/$2\/\*SUBSTIT\*\//ig" $1 } echo ########################################################################## # Script de vidage de la bdd existante ##########################################################################" FROM_FILE_PATH="/tmp/oracle-clear-schema-SYGAL.sql" TO_FILE_PATH="${OUTPUT_DIR}/00-oracle-clear-schema-SYGAL.sql" docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-script-for-schema-clearing \ --connection=doctrine.connection.orm_default && \ docker cp sygal-container:${FROM_FILE_PATH} ${TO_FILE_PATH} && \ commentPrefixInFile ${TO_FILE_PATH} && \ echo ########################################################################### # Script de création des objets de la bdd, sans les contraintes de réf ###########################################################################" FROM_FILE_PATH="/tmp/oracle-generate-schema-SYGAL-from-SYGAL.sql" TO_FILE_PATH="${OUTPUT_DIR}/00-oracle-generate-schema-SYGAL.sql" docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-script-for-schema-creation \ --src-connection=doctrine.connection.orm_default \ --dst-connection=doctrine.connection.orm_default \ --ref-constraints-included=0 && \ docker cp sygal-container:${FROM_FILE_PATH} ${TO_FILE_PATH} && \ commentPrefixInFile ${TO_FILE_PATH} && \ sed -i 's/\(START WITH [0-9]\+\)/\/*\1*\//ig; s/\(CACHE [0-9]\+\)/\/*\1*\//ig' \ ${TO_FILE_PATH} echo ########################################################################### # Scripts d'insertions de données ###########################################################################" FROM_FILE_PATH="/tmp/inserts" TO_FILE_PATH="${OUTPUT_DIR}/02-inserts" TABLES="CATEGORIE_PRIVILEGE,DOMAINE_SCIENTIFIQUE,IMPORT_OBSERV,INFORMATION,NATURE_FICHIER,PRIVILEGE,PROFIL,PROFIL_PRIVILEGE,TYPE_STRUCTURE,TYPE_VALIDATION,VERSION_FICHIER,WF_ETAPE" HISTO_ID_SUBSTIT=1 # valeur forcée pour les colonnes d'historique echo "FROM=${FROM_FILE_PATH} TO=${TO_FILE_PATH}" rm -rf ${TO_FILE_PATH} && mkdir -p ${TO_FILE_PATH} && \ docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-scripts-for-data-inserts \ --src-connection=doctrine.connection.orm_default \ --dst-connection=doctrine.connection.orm_default \ --tables=${TABLES} \ --output-dir=${FROM_FILE_PATH} && \ docker cp sygal-container:${FROM_FILE_PATH}/. ${TO_FILE_PATH} && \ for f in ${TO_FILE_PATH}/*; do commentPrefixInFile ${f}; replaceHistoIdInFile ${f} ${HISTO_ID_SUBSTIT}; done echo ########################################################################### # Script de création des contraintes de références ###########################################################################" FROM_FILE_PATH="/tmp/oracle-generate-ref-constraints-SYGAL-from-SYGAL.sql" TO_FILE_PATH="${OUTPUT_DIR}/03-oracle-generate-ref-constraints-SYGAL.sql" docker exec \ -it \ -w /app \ sygal-container \ php public/index.php generate-script-for-ref-constraints-creation \ --src-connection=doctrine.connection.orm_default \ --dst-connection=doctrine.connection.orm_default && \ docker cp sygal-container:${FROM_FILE_PATH} ${TO_FILE_PATH} && \ commentPrefixInFile ${TO_FILE_PATH} echo echo "> Terminé." echo "> Résultat dans ${OUTPUT_DIR}."
cli.md 0 → 100644 +93 −0 Original line number Diff line number Diff line # Ligne de commande de SyGAL Pour afficher l'aide de toutes les commandes fournies par l'application, se placer à la racine du projet et faire : $ php public/index.php ## Import En fait, on peut désigner par "import" l'enchainement des actions suivantes : - "importer" les données d'un établissement, càd : - interroger le WS d'un établissement (projet "sygal-import-ws") ; - enregistrer les données reçues dans des tables temporaires `TMP_*` ; - "synchroniser" les tables définitives à partir des tables temporaires (module "unicaen/import"). ### Les services disponibles Les données importées sont fractionnées en domaines ou "services", qui reflètent en réalité chacun une table dans la base de données de l'application. Voici les codes des services existants : - structure - ecole-doctorale - unite-recherche - etablissement - individu - doctorant - these - role - acteur - variable - financement - titre-acces Lorsqu'on importe les écoles doctorales, on référence le service dont le code est `ecole-doctorale`. C'est ce code du service qui devra être spécifié via l'argument `--etablissement` des commandes présentées ici. ### Commandes d'import L'import se fait pour *un seul établissement à la fois*. Les établissements dont on veut importer les données doivent être déclarés dans la config PHP de l'appli : cf. [local.php.dist](../config/autoload/local.php.dist) C'est le "code établissement" choisi dans la config qui devra être spécifié via l'argument `--etablissement` des commandes présentées ici. #### `import` On parle ici de lancer l'import d'un service précis. Par exemple, pour lancer l'import des variables de l'UCN, mais sans lancer la synchro des tables définitives : $ php public/index.php import --service=variable --etablissement=UCN --synchronize=0 Pour lancer en plus la synchro après l'interrogation du WS, mettre `--synchronize=1`. #### `import-all` Cette commande lance l'import de tous les services. Par exemple, pour lancer l'import complet des données de l'UCN, sans lancer la synchro des tables définitives : $ php public/index.php import-all --etablissement=UCN --synchronize=0 Pour que la synchro se fasse après l'interrogation du WS, mettre `--synchronize=1`. ### Commandes de synchro On parle ici de synchroniser les données des tables définitives de l'application avec celles des tables temporaires `TMP_*`. Même s'il s'agit de tables, on raisonne tout de même en service. Par exemple, la synchronisation de la table des unités de recherches (`UNITE_RECH`) se fait en spécifiant le code de service `unite-recherche`. Dans ces commandes, il n'est pas possible de spécifier un établissement précis. #### `synchronize` Cette commande lance la synchro d'une table définitive `TABLE` à partir de la table temporaire `TMP_TABLE` correspondante. Par exemple, pour lancer la synchro des variables : $ php public/index.php synchronize --service=variable #### `synchronize-all` Cette commande lance la synchro de toutes les tables définitives : $ php public/index.php synchronize-all