From bb6f2ae0d601c09ae779b3a845bfed1d5f1f349d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Mon, 25 May 2026 17:20:23 +0300 Subject: [PATCH] =?UTF-8?q?fix(db):=20widen=20supplier=5F*.platform=20VARC?= =?UTF-8?q?HAR(4)=E2=86=92VARCHAR(8)=20for=20DIRECT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TDD found that 'DIRECT' (6 chars) does not fit in VARCHAR(4). Three columns need widening: supplier_projects.platform, project_supplier_links.platform, supplier_leads.platform. supplier_manual_sync_queue.platform was already VARCHAR(8). Done in the same migration as CHECK extension — single atomic deploy. Co-Authored-By: Claude Opus 4.7 --- ...000_add_direct_platform_to_supplier_projects.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/database/migrations/2026_05_25_120000_add_direct_platform_to_supplier_projects.php b/app/database/migrations/2026_05_25_120000_add_direct_platform_to_supplier_projects.php index 9f9ccfde..764f9735 100644 --- a/app/database/migrations/2026_05_25_120000_add_direct_platform_to_supplier_projects.php +++ b/app/database/migrations/2026_05_25_120000_add_direct_platform_to_supplier_projects.php @@ -23,6 +23,13 @@ return new class extends Migration { public function up(): void { + // 1) Расширить platform-колонки до VARCHAR(8) (было VARCHAR(4): "DIRECT" не вмещается). + // supplier_manual_sync_queue.platform уже VARCHAR(8) — пропускаем. + DB::statement('ALTER TABLE supplier_projects ALTER COLUMN platform TYPE VARCHAR(8)'); + DB::statement('ALTER TABLE project_supplier_links ALTER COLUMN platform TYPE VARCHAR(8)'); + DB::statement('ALTER TABLE supplier_leads ALTER COLUMN platform TYPE VARCHAR(8)'); + + // 2) Расширить CHECK constraints на enum значения. DB::statement('ALTER TABLE supplier_projects DROP CONSTRAINT chk_supplier_projects_platform'); DB::statement("ALTER TABLE supplier_projects ADD CONSTRAINT chk_supplier_projects_platform CHECK (platform IN ('B1','B2','B3','DIRECT'))"); @@ -37,10 +44,16 @@ return new class extends Migration // запускает migrate:rollback. На prod — отдельный cleanup SQL до отката: // DELETE FROM project_supplier_links WHERE platform='DIRECT'; // DELETE FROM supplier_projects WHERE platform='DIRECT'; + // DELETE FROM supplier_leads WHERE platform='DIRECT'; DB::statement('ALTER TABLE supplier_projects DROP CONSTRAINT chk_supplier_projects_platform'); DB::statement("ALTER TABLE supplier_projects ADD CONSTRAINT chk_supplier_projects_platform CHECK (platform IN ('B1','B2','B3'))"); DB::statement('ALTER TABLE project_supplier_links DROP CONSTRAINT chk_psl_platform'); DB::statement("ALTER TABLE project_supplier_links ADD CONSTRAINT chk_psl_platform CHECK (platform IN ('B1','B2','B3'))"); + + // Сужение TYPE обратно к VARCHAR(4) — только если все значения помещаются (B1/B2/B3 = 2 символа). + DB::statement('ALTER TABLE supplier_leads ALTER COLUMN platform TYPE VARCHAR(4)'); + DB::statement('ALTER TABLE project_supplier_links ALTER COLUMN platform TYPE VARCHAR(4)'); + DB::statement('ALTER TABLE supplier_projects ALTER COLUMN platform TYPE VARCHAR(4)'); } };