fix(прогрев-площадки): добавить GRANT в миграцию sales_ad_audience_platforms

Blanket ON ALL TABLES не покрывает таблицу, созданную позже миграцией, а
ALTER DEFAULT PRIVILEGES срабатывает только для роли-создателя — без
инлайновых GRANT crm_admin_user словил бы permission denied на бою (dev-тесты
идут суперюзером и грантов не видят). Зеркалит паттерн соседней миграции
2026_07_19_100000_create_sales_ad_audience_tables.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-07-21 11:52:34 +03:00
parent 868cc0e80a
commit 6fa8a896fd
@@ -38,6 +38,22 @@ return new class extends Migration
)
SQL);
// GRANTs обеим ролям admin-db (как в create_sales_ad_audience_tables).
// Blanket ON ALL TABLES не покрывает таблицу, созданную позже миграцией,
// а DEFAULT PRIVILEGES срабатывает только для роли-создателя. Тестам гранты
// невидимы (dev = суперюзер) — забытый GRANT = permission denied на бою.
$db->statement(<<<'SQL'
DO $$
DECLARE target text;
BEGIN
FOREACH target IN ARRAY ARRAY['crm_admin_user','crm_supplier_worker'] LOOP
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = target) THEN
EXECUTE format('GRANT SELECT, INSERT, UPDATE ON sales_ad_audience_platforms TO %I', target);
END IF;
END LOOP;
END $$
SQL);
$db->statement(<<<'SQL'
INSERT INTO sales_ad_audience_platforms
(platform, enabled, min_phones, external_id, last_synced_at, last_error, status, updated_at)