metal-kompanion/db/scripts/create-prod-db.sh

23 lines
576 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
DB_NAME=${1:-kompanion}
ROLE=${ROLE:-kompanion}
PASS=${PASS:-komp}
psql -v ON_ERROR_STOP=1 <<SQL
DO $$ BEGIN
PERFORM 1 FROM pg_roles WHERE rolname = '$ROLE';
IF NOT FOUND THEN EXECUTE format('CREATE ROLE %I LOGIN PASSWORD %L', '$ROLE', '$PASS'); END IF;
END $$;
DO $$ BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = '$DB_NAME') THEN
EXECUTE format('CREATE DATABASE %I OWNER %I', '$DB_NAME', '$ROLE');
END IF;
END $$;
SQL
for f in `dirname($0)`/*.sql; do
echo "Applying $f"
psql -d "$DB_NAME" -f "$f"
done