Files
dc-observatio/create_pcp_databases.sh

87 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# PostgreSQL connection settings. Override via env if needed:
# PGHOST=... PGPORT=... PGUSER=... PGPASSWORD=... ./create_pcp_databases.sh
PGHOST="${PGHOST:-localhost}"
PGPORT="${PGPORT:-5432}"
PGUSER="${PGUSER:-postgres}"
PGPASSWORD="${PGPASSWORD:-password}"
export PGPASSWORD
DATABASES=(
pcp_ballistics
pcp_complex_plan
pcp_missions
pcp_requests
pcp_satellite_catalog
pcp_satellites
pcp_slots
pcp_stations
pcp_tgu
pcp_tle
)
# Services whose migrations use PostGIS geometry/extension.
POSTGIS_DATABASES=(
pcp_ballistics
pcp_missions
pcp_requests
pcp_slots
pcp_stations
)
psql_admin() {
psql -v ON_ERROR_STOP=1 \
--host="$PGHOST" \
--port="$PGPORT" \
--username="$PGUSER" \
--dbname=postgres \
"$@"
}
psql_db() {
local db="$1"
shift
psql -v ON_ERROR_STOP=1 \
--host="$PGHOST" \
--port="$PGPORT" \
--username="$PGUSER" \
--dbname="$db" \
"$@"
}
create_database_if_missing() {
local db="$1"
local exists
exists="$(psql_admin -tAc "SELECT 1 FROM pg_database WHERE datname = '$db'")"
if [[ "$exists" == "1" ]]; then
echo "Database already exists: $db"
else
echo "Creating database: $db"
psql_admin -c "CREATE DATABASE \"$db\" OWNER \"$PGUSER\" ENCODING 'UTF8';"
fi
}
enable_postgis_if_possible() {
local db="$1"
echo "Enabling PostGIS in database: $db"
psql_db "$db" -c "CREATE EXTENSION IF NOT EXISTS postgis;"
}
main() {
echo "Target PostgreSQL: ${PGHOST}:${PGPORT}, user=${PGUSER}"
for db in "${DATABASES[@]}"; do
create_database_if_missing "$db"
done
for db in "${POSTGIS_DATABASES[@]}"; do
enable_postgis_if_possible "$db"
done
echo "Done. Databases are ready. Services will create their schemas via Flyway on startup."
}
main "$@"