You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.2 KiB
Bash

# linux script server sql about functions encapsulation.
# Longwei Lai
###################################################################
source "${____FWK_SCRIPT_PATH}/lnx_fwk_path.sh"
source "${____FWK_SCRIPT_PATH}/lnx_fwk_server.sh"
source "${____LOGIC_SCRIPT_PATH}/lnx_logic_defs.sh"
# execute sql command on config database
# arguments:
# arg1: sql command
# returns:
# echo style:
# sql query return
# return style:
# 0: success
# <other>: failed
function exec_sql_cmd_on_confdb()
{
exec_sql_cmd mysql_confdb "$1"
}
# execute sql command on game database
# arguments:
# arg1: sql command
# returns:
# echo style:
# sql query return
# return style:
# 0: success
# <other>: failed
function exec_sql_cmd_on_gamedb()
{
exec_sql_cmd mysql_gamedb "$1"
}
# execute sql command on specific config database(in dbconf.lua)
# arguments:
# arg1: config name
# arg2: sql command
# returns:
# echo style:
# sql query return
# return style:
# 0: success
# <other>: failed
function exec_sql_cmd()
{
local dbcfg_name="$1"
local sql_stmt="$2"
local access_info=(`_get_db_access_info "${dbcfg_name}"`)
local sql_ret="`python2.6 ${____FWK_SCRIPT_PATH}/mysql_handler.py ${access_info[0]} ${access_info[1]} "${access_info[2]}" "${access_info[3]}" "${access_info[4]}" "${sql_stmt}"`"
if [ $? -ne 0 ]; then
echo -n "${sql_ret}"
return 1
fi
echo -n "${sql_ret}"
}
# -------------------- internal implementation ----------------------
function _get_db_access_info()
{
local dbcfg_name="$1"
local dbconf_file="${SVR_PATH}/dbconf.lua"
if [ ! -f "${dbconf_file}" ]; then
log_err "not found db config file: ${dbconf_file}"
return 1
fi
local can_grep=FALSE
local sql_host=
local sql_port=
local sql_user=
local sql_passwd=
local sql_db=
while read line; do
if [ ! -z "`echo -n "${line}" | grep "dbconf.${dbcfg_name}"`" ]; then
can_grep=TRUE
continue
fi
if [ "${can_grep}" != TRUE ]; then
continue
fi
local isend="`echo -n "${line}" | sed -n -r 's/\s*(})\s*/\1/p'`"
if [ ! -z "${isend}" ]; then
break
fi
local gethost="`echo -n "${line}" | sed -n -r 's/\s*host\s*=\s*"(.*)"\s*,/\1/p'`"
if [ ! -z "${gethost}" ]; then
sql_host="${gethost}"
fi
local getport="`echo -n "${line}" | sed -n -r 's/\s*port\s*=\s*(.*)\s*,/\1/p'`"
if [ ! -z "${getport}" ]; then
sql_port="${getport}"
fi
local getuser="`echo -n "${line}" | sed -n -r 's/\s*user\s*=\s*"([^"]*)"\s*,/\1/p'`"
if [ ! -z "${getuser}" ]; then
sql_user="${getuser}"
fi
local getpasswd="`echo -n "${line}" | sed -n -r 's/\s*password\s*=\s*"([^"]*)"\s*,/\1/p'`"
if [ ! -z "${getpasswd}" ]; then
sql_passwd="${getpasswd}"
fi
local getdb="`echo -n "${line}" | sed -n -r 's/\s*database\s*=\s*"([^"]*)"\s*,/\1/p'`"
if [ ! -z "${getdb}" ]; then
sql_db="${getdb}"
fi
done < "${dbconf_file}"
echo ${sql_host} ${sql_port} ${sql_user} ${sql_passwd} ${sql_db}
}