26 lines
843 B
Bash
Executable File
26 lines
843 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
log() { echo "[$(date -u +'%Y-%m-%dT%H:%M:%SZ')] $*"; }
|
|
fail() { echo "ERROR: $*" >&2; exit 1; }
|
|
|
|
: "${DB_HOST:?DB_HOST required}"
|
|
: "${DB_PORT:?DB_PORT required}"
|
|
: "${DB_NAME:?DB_NAME required}"
|
|
: "${DB_USER:?DB_USER required}"
|
|
: "${DB_PASS:?DB_PASS required}"
|
|
|
|
export PGPASSWORD="$DB_PASS"
|
|
|
|
log "Checking if database '$DB_NAME' exists..."
|
|
EXISTS=$(psql -U "$DB_USER" -h "$DB_HOST" -p "$DB_PORT" -d postgres -tAc "SELECT 1 FROM pg_database WHERE datname='${DB_NAME}'" | tr -d '[:space:]') || true
|
|
|
|
if [[ "$EXISTS" == "1" ]]; then
|
|
log "Database '$DB_NAME' already exists. Nothing to do."
|
|
exit 0
|
|
fi
|
|
|
|
log "Creating database '$DB_NAME'..."
|
|
psql -U "$DB_USER" -h "$DB_HOST" -p "$DB_PORT" -d postgres -v ON_ERROR_STOP=1 -c "CREATE DATABASE \"$DB_NAME\";"
|
|
log "Database '$DB_NAME' created successfully."
|