return 1
}
-# $1: dbname, $2: username, $3: password
+
+pg_test_db() {
+ if [ "$3" ]; then
+ echo "SHOW ALL;" | env PGPASSWORD="$3" $PSQL -U "$2" -d "$1" -q 2>/dev/null >/dev/null
+ return $?
+ else
+ echo "SHOW ALL;" | $PSQL -w -U "$2" -d "$1" -q 2>/dev/null >/dev/null
+ return $?
+ fi
+}
+
+pg_include_sql() {
+ if [ "$3" ]; then
+ env PGPASSWORD="$3" $PSQL -U "$2" -d "$1" -e -f "$4"
+ return $?
+ else
+ $PSQL -w -U "$2" -d "$1" -e -f "$4"
+ return $?
+ fi
+}
+
+# $1: dbname, $2: username, $3: password, $4: sql populate script
pg_require_db() {
+ local ret
+
pg_test_db $@ && return 0
( echo "CREATE DATABASE $1;"
echo -n "CREATE USER $2"
[ "$3" ] && echo -n " WITH PASSWORD '$3'"
- echo ";"
- echo "GRANT ALL PRIVILEGES ON DATABASE \"$1\" to $2;" ) |
+ echo " NOCREATEDB NOSUPERUSER NOCREATEROLE NOINHERIT;"
+ echo "GRANT ALL PRIVILEGES ON DATABASE \"$1\" TO $2;" ) |
$PSQL -U postgres -d template1 -e
- return $?
-}
+ ret=$?
+ [ "$ret" = "0" ] || return $ret
-pg_test_db() {
- PGPASSWORD=$3
- echo "SHOW ALL;" | $PSQL -U $2 -d $1 -q 2>/dev/null >/dev/null
- return $?
+ if [ "$4" ]; then
+ pg_include_sql "$@"
+ ret=$?
+ fi
+
+ return $ret
}
uci_require_db() {
- local dbname dbuser dbpass
+ local dbname dbuser dbpass dbscript
config_get dbname $1 name
config_get dbuser $1 user
config_get dbpass $1 pass
- pg_require_db $dbname $dbuser $dbpass
+ config_get dbscript $1 script
+ pg_require_db "$dbname" "$dbuser" "$dbpass" "$dbscript"
}
[ "$1" = "init" ] && {