#!/bin/bash
# Инициализация БД sarex-стека: базы + отдельные роли приложений с паролями.
# Запускается автоматически ТОЛЬКО при первой инициализации пустого тома postgres
# (каталог /docker-entrypoint-initdb.d). Значения берутся из окружения сервиса
# postgres (см. docker-compose.yaml). Для уже существующего тома примени вручную
# те же команды (см. README) — иначе приложения не залогинятся под новыми ролями.
#
# ВНИМАНИЕ: пароли подставляются в SQL как есть — не используй одинарные кавычки в них.
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<EOSQL
-- ===== Роли приложений (LOGIN + пароль). Идемпотентно. =====
SELECT 'CREATE ROLE "${DJANGO_DB_USER}" LOGIN'
WHERE NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${DJANGO_DB_USER}')\gexec
ALTER ROLE "${DJANGO_DB_USER}" WITH LOGIN PASSWORD '${DJANGO_DB_PASSWORD}';

SELECT 'CREATE ROLE "${PROC_DB_USER}" LOGIN'
WHERE NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${PROC_DB_USER}')\gexec
ALTER ROLE "${PROC_DB_USER}" WITH LOGIN PASSWORD '${PROC_DB_PASSWORD}';

-- ===== Базы данных (идемпотентно). =====
-- sarex_db обычно уже создан через POSTGRES_DB; workflow_db создаём здесь.
SELECT 'CREATE DATABASE "${DJANGO_DB}"'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${DJANGO_DB}')\gexec

SELECT 'CREATE DATABASE "${PROC_DB}" OWNER "${PROC_DB_USER}"'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${PROC_DB}')\gexec

-- ===== Владельцы и права. =====
ALTER DATABASE "${DJANGO_DB}" OWNER TO "${DJANGO_DB_USER}";
ALTER DATABASE "${PROC_DB}"   OWNER TO "${PROC_DB_USER}";
GRANT ALL PRIVILEGES ON DATABASE "${DJANGO_DB}" TO "${DJANGO_DB_USER}";
GRANT ALL PRIVILEGES ON DATABASE "${PROC_DB}"   TO "${PROC_DB_USER}";
EOSQL

echo "init: roles ${DJANGO_DB_USER}/${PROC_DB_USER} + databases ${DJANGO_DB}/${PROC_DB} ready"
