#!/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}."