-- ============================================================ -- 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;