diff options
Diffstat (limited to 'bin')
-rw-r--r-- | bin/db_assembler/.gitignore | 1 | ||||
-rw-r--r-- | bin/db_assembler/README.md | 16 | ||||
-rwxr-xr-x | bin/db_assembler/db_assembler.sh | 16 | ||||
-rw-r--r-- | bin/db_assembler/includes/functions.sh | 99 | ||||
-rw-r--r-- | bin/db_assembler/includes/includes.sh | 2 |
5 files changed, 109 insertions, 25 deletions
diff --git a/bin/db_assembler/.gitignore b/bin/db_assembler/.gitignore index 0d5bd649da..0c63e20d7b 100644 --- a/bin/db_assembler/.gitignore +++ b/bin/db_assembler/.gitignore @@ -1,2 +1,3 @@ /output/ +/backup/ config.sh diff --git a/bin/db_assembler/README.md b/bin/db_assembler/README.md new file mode 100644 index 0000000000..2d8f4a0eab --- /dev/null +++ b/bin/db_assembler/README.md @@ -0,0 +1,16 @@ +## How to use: + +First of all, if you need some custom configuration you have to copy and rename +/conf/config.sh.dist in /conf/config.sh and configure it + +db_assembler.sh script contains an interactive menu to assemble and import sql files. +Just run it to display the options. + + +Note: You can even use actions directly by command lines specifying the option. +Ex: + ./db_assembler.sh 1 + +It will start the assemble process of all sql files. + + diff --git a/bin/db_assembler/db_assembler.sh b/bin/db_assembler/db_assembler.sh index 8e4addaec6..4b4c23e5b9 100755 --- a/bin/db_assembler/db_assembler.sh +++ b/bin/db_assembler/db_assembler.sh @@ -19,28 +19,28 @@ options=( function _switch() { case $1 in "Assemble ALL") - run true true true + dbasm_run true true true ;; "Assemble only bases") - run true false false + dbasm_run true false false ;; "Assemble only updates") - run false true false + dbasm_run false true false ;; "Assemble only customs") - run false false true + dbasm_run false false true ;; "Assemble & import ALL") - import true true true + dbasm_import true true true ;; "Assemble & import only bases") - import true false false + dbasm_import true false false ;; "Assemble & import only updates") - import false true false + dbasm_import false true false ;; "Assemble & import only customs") - import false false true + dbasm_import false false true ;; "Quit") echo "Goodbye!" diff --git a/bin/db_assembler/includes/functions.sh b/bin/db_assembler/includes/functions.sh index ea8d146fe1..8b4119d014 100644 --- a/bin/db_assembler/includes/functions.sh +++ b/bin/db_assembler/includes/functions.sh @@ -1,4 +1,58 @@ -function assemble() { +function dbasm_isNotEmpty() { + dbname=$1 + conf=$2 + + eval $confs; + export MYSQL_PWD=$MYSQL_PASS + + RESULT=`"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" --skip-column-names -e "SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = '${dbname}'"` + if (( $RESULT > 0 )); then + true + else + false + fi +} + +function dbasm_dbExists() { + dbname=$1 + conf=$2 + + eval $confs; + export MYSQL_PWD=$MYSQL_PASS + + RESULT=`"$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" --skip-column-names -e "SHOW DATABASES LIKE '${dbname}'"` + if [ "$RESULT" == "${dbname}" ]; then + true + else + false + fi +} + +function dbasm_createDB() { + database=${1,,} + + uc=${database^^} + + name="DB_"$uc"_CONF" + confs=${!name} + + name="DB_"$uc"_NAME" + dbname=${!name} + + eval $confs; + + export MYSQL_PWD=$MYSQL_PASS + + if dbasm_dbExists $dbname "$confs"; then + echo "$dbname database exists" + else + "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "GRANT USAGE ON * . * TO 'acore'@'${MYSQL_HOST}' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 ;" + "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "CREATE DATABASE \`${dbname}\`" + "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" -e "GRANT ALL PRIVILEGES ON \`${dbname}\` . * TO 'acore'@'${MYSQL_HOST}' WITH GRANT OPTION;" + fi +} + +function dbasm_assemble() { # to lowercase database=${1,,} start_sql=$2 @@ -102,20 +156,20 @@ function assemble() { fi } -function run() { +function dbasm_run() { echo "===== STARTING ASSEMBLY PROCESS =====" mkdir -p "$OUTPUT_FOLDER" for db in ${DATABASES[@]} do - assemble "$db" $version".sql" $1 $2 $3 + dbasm_assemble "$db" $version".sql" $1 $2 $3 done echo "===== DONE =====" } -function db_backup() { +function dbasm_db_backup() { echo "backing up $1" database=${1,,} @@ -137,9 +191,7 @@ function db_backup() { "$DB_MYSQL_DUMP_EXEC" --opt --user="$MYSQL_USER" --host="$MYSQL_HOST" "$dbname" > "${BACKUP_FOLDER}${database}_backup_${now}.sql" && echo "done" } -function db_import() { - echo "importing $1 - $2" - +function dbasm_db_import() { database=${1,,} type=$2 @@ -151,6 +203,15 @@ function db_import() { name="DB_"$uc"_NAME" dbname=${!name} + if [[ $type = "base" && $DB_SKIP_BASE_IMPORT_IF_EXISTS = true ]]; then + if dbasm_isNotEmpty $dbname "$confs"; then + echo "$dbname is not empty, base importing skipped" + return + fi + fi + + echo "importing $1 - $2 ..." + eval $confs; export MYSQL_PWD=$MYSQL_PASS @@ -158,25 +219,31 @@ function db_import() { "$DB_MYSQL_EXEC" -h "$MYSQL_HOST" -u "$MYSQL_USER" "$dbname" < "${OUTPUT_FOLDER}${database}_${type}.sql" } -function import () { - run $1 $2 $2 - +function dbasm_import() { + dbasm_run $1 $2 $2 with_base=$1 with_updates=$2 with_custom=$3 + echo "===== CHECKING DBs =====" + for db in ${DATABASES[@]} + do + dbasm_createDB "$db" + done + echo "===== DONE =====" + # # BACKUP # if [ $BACKUP_ENABLE = true ]; then - echo "===== STARTING BACKUP PROCESS =====" + echo "===== STARTING BACKUP PROCESS =====" mkdir -p "$BACKUP_FOLDER" for db in ${DATABASES[@]} do - db_backup "$db" + dbasm_db_backup "$db" done echo "===== DONE =====" fi @@ -188,23 +255,23 @@ function import () { if [ $with_base = true ]; then for db in ${DATABASES[@]} do - db_import "$db" "base" + dbasm_db_import "$db" "base" done fi if [ $with_updates = true ]; then for db in ${DATABASES[@]} do - db_import "$db" "update" + dbasm_db_import "$db" "update" done fi if [ $with_custom = true ]; then for db in ${DATABASES[@]} do - db_import "$db" "custom" + dbasm_db_import "$db" "custom" done fi echo "===== DONE =====" -}
\ No newline at end of file +} diff --git a/bin/db_assembler/includes/includes.sh b/bin/db_assembler/includes/includes.sh index f74c527577..b4ac555151 100644 --- a/bin/db_assembler/includes/includes.sh +++ b/bin/db_assembler/includes/includes.sh @@ -8,4 +8,4 @@ if [ -f "$AC_PATH_DBASSEMBLER/config.sh" ]; then source "$AC_PATH_DBASSEMBLER/config.sh" # should overwrite previous fi -source "$AC_PATH_DBASSEMBLER/includes/functions.sh"
\ No newline at end of file +source "$AC_PATH_DBASSEMBLER/includes/functions.sh" |