mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-08-24 17:36:39 +00:00
A few improvements to database creation.
Inspired by Peter Eisentraut's blog post about writing scripts for PostgreSQL.
This commit is contained in:
parent
f1a1c2fa73
commit
2f8eb21b82
@ -32,19 +32,19 @@ export AWL_DBAUSER=davical_dba
|
||||
export AWL_APPUSER=davical_app
|
||||
|
||||
# Get the major version for PostgreSQL
|
||||
export DBVERSION="`psql -qAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
|
||||
export DBVERSION="`psql -qXAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
|
||||
|
||||
install_note() {
|
||||
cat >>"${INSTALL_NOTE_FN}"
|
||||
}
|
||||
|
||||
db_users() {
|
||||
psql -qAt -c "SELECT usename FROM pg_user;" template1
|
||||
psql -qXAt -c "SELECT usename FROM pg_user;" template1
|
||||
}
|
||||
|
||||
create_db_user() {
|
||||
if ! db_users | grep "^${1}$" >/dev/null ; then
|
||||
psql -qAt -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1
|
||||
psql -qXAt -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1
|
||||
cat <<EONOTE | install_note
|
||||
* You will need to edit the PostgreSQL pg_hba.conf to allow the
|
||||
'${1}' database user access to the 'davical' database.
|
||||
@ -54,15 +54,17 @@ EONOTE
|
||||
}
|
||||
|
||||
create_plpgsql_language() {
|
||||
if ! psql ${DBA} -qAt -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then
|
||||
if ! psql ${DBA} -qXAt -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then
|
||||
createlang plpgsql "${DBNAME}"
|
||||
fi
|
||||
}
|
||||
|
||||
try_db_user() {
|
||||
[ "XtestX`psql -U "${1}" -qAt -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ]
|
||||
[ "XtestX`psql -U "${1}" -qXAt -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ]
|
||||
}
|
||||
|
||||
# Hide all the annoying NOTICE... messages
|
||||
export PGOPTIONS='--client-min-messages=warning'
|
||||
|
||||
create_db_user "${AWL_DBAUSER}"
|
||||
create_db_user "${AWL_APPUSER}"
|
||||
@ -113,12 +115,12 @@ create_plpgsql_language
|
||||
|
||||
#
|
||||
# Load the AWL base tables and schema management tables
|
||||
psql -qAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: )"
|
||||
psql -qAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: |^t$)"
|
||||
psql -qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1
|
||||
psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1
|
||||
|
||||
#
|
||||
# Load the DAViCal tables
|
||||
psql -qAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: |^t$)"
|
||||
psql -qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1
|
||||
|
||||
#
|
||||
# Set permissions for the application DB user on the database
|
||||
@ -139,7 +141,7 @@ EOFAILURE
|
||||
fi
|
||||
#
|
||||
# Load the required base data
|
||||
psql -qAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}" | egrep -v '^10'
|
||||
psql -qXAt ${DBA} -f "${DBADIR}/base-data.sql" "${DBNAME}" | egrep -v '^10'
|
||||
|
||||
#
|
||||
# We can override the admin password generation for regression testing predictability
|
||||
@ -163,7 +165,7 @@ if [ "$ADMINPW" = "" ] ; then
|
||||
ADMINPW="please change this password"
|
||||
fi
|
||||
|
||||
psql -q -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
|
||||
psql -qX -c "UPDATE usr SET password = '**${ADMINPW}' WHERE user_no = 1;" "${DBNAME}"
|
||||
|
||||
echo "NOTE"
|
||||
echo "===="
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
|
||||
|
||||
Supported locales updated.
|
||||
Updated view: dav_principal.sql applied.
|
||||
CalDAV functions updated.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user