fix(migration): 2026_05_22_000002 — use pgsql_supplier connection (owner-rights fix)

Миграция падала на проде:
  SQLSTATE[42501]: Insufficient privilege: must be owner of table webhook_log

Причина: default connection 'pgsql' (crm_app_user) не имеет owner-прав на
webhook_log (owner — crm_migrator). Заменено на 'pgsql_supplier'
(BYPASSRLS-роль crm_supplier_worker) — паттерн Спека B Phase 1 (commit 546ca30a),
который выработан ровно под эту проблему prod-ролей.

Эта миграция блокировала выкатку legacy-webhook-removal (Phase 6 deploy
24.05.2026, отменено rollback'ом). После fix миграция применится
no-op (webhook_log будет дропнут моей миграцией 2026_05_24_140000
сразу после).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-24 19:29:05 +03:00
parent 6262639904
commit d377d97737
@@ -9,8 +9,11 @@ return new class extends Migration
{
public function up(): void
{
// Guard: only run if webhook_log exists (should always exist, but be safe)
if (! Schema::hasTable('webhook_log')) {
$conn = DB::connection('pgsql_supplier');
// Guard: only run if webhook_log exists (на проде после legacy-webhook-removal
// таблицы нет — миграция становится no-op).
if (! $conn->getSchemaBuilder()->hasTable('webhook_log')) {
return;
}
@@ -18,16 +21,18 @@ return new class extends Migration
base_path('/../db/migrations/2026_05_22_002_webhook_log_supplier_columns.sql')
);
DB::unprepared($sql);
$conn->unprepared($sql);
}
public function down(): void
{
if (! Schema::hasTable('webhook_log')) {
$conn = DB::connection('pgsql_supplier');
if (! $conn->getSchemaBuilder()->hasTable('webhook_log')) {
return;
}
DB::unprepared(<<<'SQL'
$conn->unprepared(<<<'SQL'
ALTER TABLE webhook_log
DROP COLUMN IF EXISTS source,
DROP COLUMN IF EXISTS status,