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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user