-- ============================================================
-- Ruolo PostgreSQL applicativo pechub_app
--
-- Questo script viene eseguito al primo avvio del container DB.
-- Il ruolo viene creato PRIMA che Alembic esegua le migrazioni.
-- I GRANT sulle singole tabelle vengono gestiti dalla migration 0006.
--
-- Scopo:
--   - pechub_app è un utente non-superuser su cui RLS è attiva
--   - Il backend e il worker usano DATABASE_URL con pechub_app
--   - Alembic usa DATABASE_URL_SYNC con l'utente pechub (superuser)
-- ============================================================

DO $$
BEGIN
    IF NOT EXISTS (
        SELECT 1 FROM pg_roles WHERE rolname = 'pechub_app'
    ) THEN
        CREATE USER pechub_app WITH PASSWORD 'pechub_app_password'
            NOSUPERUSER NOCREATEDB NOCREATEROLE;
        RAISE NOTICE '[pechub] Ruolo pechub_app creato';
    ELSE
        RAISE NOTICE '[pechub] Ruolo pechub_app già presente – skip';
    END IF;
END
$$;

-- Permessi di base (i GRANT sulle tabelle vengono dopo le migrazioni)
GRANT CONNECT ON DATABASE pechub TO pechub_app;
GRANT USAGE ON SCHEMA public TO pechub_app;

-- Default privileges: tutte le future tabelle create da pechub
-- ricevono automaticamente i permessi per pechub_app
ALTER DEFAULT PRIVILEGES FOR ROLE pechub IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO pechub_app;

ALTER DEFAULT PRIVILEGES FOR ROLE pechub IN SCHEMA public
    GRANT USAGE, SELECT ON SEQUENCES TO pechub_app;
