#!/bin/bash # include everything from include for inc in $(find ./include -type f -name \*.sh) do source "${inc}" done die() { echo "ERROR: $@" exit 1 } mysql_command() { local sql_user local sql_pass local sql_host local sql_db local sql_command sql_user=$1 sql_pass=$2 sql_host=$3 sql_db=$4 sql_command=$5 #fallback (sql_opts not, they are optional ) if [ -z "${sql_user}" \ -o -z "${sql_pass}" \ -o -z "${sql_host}" \ -o -z "${sql_db}" \ -o -z "${sql_command}" ] then echo echo "Usage:" echo -e " mysql_command user pass host db \"sql-command\"" echo return 1 fi mysql \ --user="${sql_user}" \ --password="${sql_pass}" \ --host="${sql_host}" \ --database="${sql_db}" \ --batch \ --skip-column-names \ --execute="${sql_command}" \ || return 1 return 0 } mysqldo() { mysql_command \ "${MCORE_SQL_USER}" \ "${MCORE_SQL_PASS}" \ "${MCORE_SQL_HOST}" \ "${MCORE_SQL_DB}" \ "$@" \ && return 0 || return 1 } mysql_insert() { local cmdline="$@" #local table="$1" local table="${cmdline%%,*}" local argv local insert_line local update_line local key local value local counter OLD_IFS=${IFS} IFS=, declare -i counter=0 #for argv in ${cmdline/$1/} # first value is the table_name for argv in ${cmdline#*,} # first value is the table_name do key="${argv%=*}" value="${argv#*=}" if [ ${counter} -eq 0 ] then insert_keys="${key}" insert_values="'${value}'" update_line="${key}='${value}'" else insert_keys+=",${key}" insert_values+=",'${value}'" update_line+=",${key}='${value}'" fi (( counter ++ )) done IFS=${OLD_IFS} echo "INSERT INTO ${table} (${insert_keys}) VALUES(${insert_values}) ON DUPLICATE KEY UPDATE ${update_line};" #mysqldo "insert into ${table} (${insert_keys}) values(${insert_values}) on duplicate key update ${update_line};" } # creates a mysql table with help of a defined array TABLE_DEFINITION: # array values are a struct like this: # first array element is the table name, everything else are column descriptions # TABLE_DEFINITION=( # "table_name" # "column1_name column1_argvs" # "column2_name column2_argvs" # "columnN_name columnN_argvs" # ) sql_create_table() { local table local count local i local line local opts local column local autoincrement local primary local create table="${TABLE_DEFINITION[0]}" count="${#TABLE_DEFINITION[*]}" for ((i=1; i