summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rw-r--r--bin/db_assembler/.gitignore1
-rw-r--r--bin/db_assembler/README.md16
-rwxr-xr-xbin/db_assembler/db_assembler.sh16
-rw-r--r--bin/db_assembler/includes/functions.sh99
-rw-r--r--bin/db_assembler/includes/includes.sh2
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"