File: //usr/local/share/hostingplatform/bash-functions
export SQLITE=/usr/bin/sqlite3
export SQLITE_DATABASE=/var/local/hostingplatform/db.sqlite
sqlite_query () {
${SQLITE} ${SQLITE_DATABASE} "$1"
}
list_packages () {
sqlite_query 'SELECT packagename FROM hosting;'
}
package_exists () {
for package in `list_packages`
do
if [ "$package" == "$1" ]
then
return 1
fi
done
return 0
}
list_mysql_databases () {
mysql_query mysql "
SHOW DATABASES
LIKE
$(mysql_quote_literal "$1_%")
;
"
}
list_postgresql_databases () {
pg_query postgres "
SELECT
datname as Name
FROM
pg_catalog.pg_database
WHERE
datname ILIKE $(pg_quote_literal "$1_%")
;
"
}
mysql_dump () {
MYSQL_USER="$(grep user /etc/mysql/debian.cnf |sort -u |awk -F '=' '{ print $2 }' |tr -d ' ')"
MYSQL_PASS="$(grep pass /etc/mysql/debian.cnf |sort -u |awk -F '=' '{ print $2 }' |tr -d ' ')"
mysqldump \
--user="${MYSQL_USER}" \
--password="${MYSQL_PASS}" \
"$1"
}
mysql_import () {
MYSQL_USER="$(grep user /etc/mysql/debian.cnf |sort -u |awk -F '=' '{ print $2 }' |tr -d ' ')"
MYSQL_PASS="$(grep pass /etc/mysql/debian.cnf |sort -u |awk -F '=' '{ print $2 }' |tr -d ' ')"
mysql \
--user="${MYSQL_USER}" \
--password="${MYSQL_PASS}" \
--batch --silent \
"$1"
}
pg_dump () {
su postgres -l -c "pg_dump -c -x -O '$1'"
}
pg_import () {
su postgres -l -c "psql '$1'"
}
sqlite_quote_literal () {
mysql_quote_literal "$1"
}
mysql_quote_literal () {
echo -n "'"
echo -n "$1" | sed -e 's/['\''\\\\]/\\&/g'
echo -n "'"
}
mysql_query () {
MYSQL_USER="$(grep user /etc/mysql/debian.cnf |sort -u |awk -F '=' '{ print $2 }' |tr -d ' ')"
MYSQL_PASS="$(grep pass /etc/mysql/debian.cnf |sort -u |awk -F '=' '{ print $2 }' |tr -d ' ')"
mysql \
--user="${MYSQL_USER}" \
--password="${MYSQL_PASS}" \
--batch --silent \
-e "$2" \
"$1"
}
### JP's PostgreSQL functions
pg_query () {
su postgres -l -c "psql $1" <<EOF
\set QUIET 1
\set ON_ERROR_STOP 1
\pset tuples_only on
\pset fieldsep '\t'
\pset format unaligned
BEGIN;
$2
COMMIT;
EOF
}
pg_check_connection () {
pg_query template1 'select 1;' > /dev/null
}
pg_user_exists () {
R=`pg_query template1 \
'select 1 from pg_user where usename = '$(pg_quote_literal "$1")';'`
if [ "X$R" != "X" ]; then
return 0
else
return 1
fi
}
pg_db_exists () {
R=`pg_query template1 \
'select * from pg_database where datname = '$(pg_quote_literal "$1")';'`
if [ "X$R" != "X" ]; then
return 0
else
return 1
fi
}
pg_create_user () {
pg_query template1 'create user '$(pg_quote_ident "$1")';'
}
pg_drop_user () {
pg_query template1 'drop user '$(pg_quote_ident "$1")';'
}
pg_create_db () {
su postgres -l -c "psql template1" <<EOF
\set QUIET 1
\set ON_ERROR_STOP 1
create database $(pg_quote_ident "$1");
EOF
}
pg_drop_db () {
su postgres -l -c "psql template1" <<EOF
\set QUIET 1
\set ON_ERROR_STOP 1
drop database $(pg_quote_ident "$1");
EOF
}
pg_run () {
pg_query "$1" "\i $2"
}
pg_quote_literal () {
echo -n "E'"
echo -n "$1" | sed -e 's/['\''\\\\]/\\&/g'
echo -n "'"
}
pg_quote_ident () {
echo -n '"'
echo -n "$1" | sed -e 's/"/""/g'
echo -n '"'
}