23 lines
570 B
Bash
Executable File
23 lines
570 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 db/init/*.sql; do
|
|
echo "Applying $f"
|
|
psql -d "$DB_NAME" -f "$f"
|
|
done
|