From 9ca5b25c35632094bdc8455c916244bf24e1e96b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Jul 2026 10:51:26 +0000 Subject: [PATCH 1/5] Initial plan From fcabd13126f3ab33489ecc8c28187bbb6256e64e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Jul 2026 10:54:30 +0000 Subject: [PATCH 2/5] fix: align component check foreign key type --- ...2025_09_14_000000_create_component_checks_table.php | 4 +++- .../Unit/Migrations/CreateComponentChecksTableTest.php | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/Unit/Migrations/CreateComponentChecksTableTest.php diff --git a/database/migrations/2025_09_14_000000_create_component_checks_table.php b/database/migrations/2025_09_14_000000_create_component_checks_table.php index ec78651f..4f3d92d4 100644 --- a/database/migrations/2025_09_14_000000_create_component_checks_table.php +++ b/database/migrations/2025_09_14_000000_create_component_checks_table.php @@ -13,13 +13,15 @@ public function up(): void { Schema::create('component_checks', function (Blueprint $table) { $table->id(); - $table->foreignId('component_id')->constrained('components')->cascadeOnDelete(); + $table->unsignedInteger('component_id'); $table->unsignedTinyInteger('status'); $table->boolean('successful')->default(false); $table->unsignedSmallInteger('response_code')->nullable(); $table->unsignedInteger('response_time')->nullable(); $table->timestamp('checked_at'); $table->timestamps(); + + $table->foreign('component_id')->references('id')->on('components')->cascadeOnDelete(); }); } diff --git a/tests/Unit/Migrations/CreateComponentChecksTableTest.php b/tests/Unit/Migrations/CreateComponentChecksTableTest.php new file mode 100644 index 00000000..3146cb04 --- /dev/null +++ b/tests/Unit/Migrations/CreateComponentChecksTableTest.php @@ -0,0 +1,10 @@ +toContain("\$table->unsignedInteger('component_id');") + ->toContain("\$table->foreign('component_id')->references('id')->on('components')->cascadeOnDelete();") + ->not->toContain("\$table->foreignId('component_id')"); +}); From 3bcf4db5933cd2610dcf367b083b957ba3207f8a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Jul 2026 10:55:38 +0000 Subject: [PATCH 3/5] test: validate MySQL DDL for component check migration --- .../CreateComponentChecksTableTest.php | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/tests/Unit/Migrations/CreateComponentChecksTableTest.php b/tests/Unit/Migrations/CreateComponentChecksTableTest.php index 3146cb04..02b33fa8 100644 --- a/tests/Unit/Migrations/CreateComponentChecksTableTest.php +++ b/tests/Unit/Migrations/CreateComponentChecksTableTest.php @@ -1,10 +1,34 @@ once() + ->with('component_checks', \Mockery::on(function (callable $callback) use (&$sql): bool { + $connection = new MySqlConnection(new \PDO('sqlite::memory:'), 'testing'); + $grammar = new MySqlGrammar; + $blueprint = new Blueprint($connection, 'component_checks'); + + $blueprint->create(); + $callback($blueprint); + + $sql = $blueprint->toSql($connection, $grammar); + + return true; + })); + + $migration->up(); + + $compiledSql = implode("\n", $sql); - expect($migration) - ->toContain("\$table->unsignedInteger('component_id');") - ->toContain("\$table->foreign('component_id')->references('id')->on('components')->cascadeOnDelete();") - ->not->toContain("\$table->foreignId('component_id')"); + expect($compiledSql) + ->toContain('`component_id` int unsigned not null') + ->not->toContain('`component_id` bigint unsigned not null'); }); From b0dcb4d01c7f1c1daa6bafca07daccb84c245be9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Jul 2026 12:12:21 +0000 Subject: [PATCH 4/5] fix: pass connection to MySqlGrammar constructor for prefer-lowest compatibility --- tests/Unit/Migrations/CreateComponentChecksTableTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Unit/Migrations/CreateComponentChecksTableTest.php b/tests/Unit/Migrations/CreateComponentChecksTableTest.php index 02b33fa8..fb5dbd7f 100644 --- a/tests/Unit/Migrations/CreateComponentChecksTableTest.php +++ b/tests/Unit/Migrations/CreateComponentChecksTableTest.php @@ -13,7 +13,7 @@ ->once() ->with('component_checks', \Mockery::on(function (callable $callback) use (&$sql): bool { $connection = new MySqlConnection(new \PDO('sqlite::memory:'), 'testing'); - $grammar = new MySqlGrammar; + $grammar = new MySqlGrammar($connection); $blueprint = new Blueprint($connection, 'component_checks'); $blueprint->create(); From 947f9b949611fc36a563bbd39a7864ae6a2c9bf3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Jul 2026 12:17:03 +0000 Subject: [PATCH 5/5] fix: correct Blueprint constructor call for cross-version compatibility --- tests/Unit/Migrations/CreateComponentChecksTableTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Unit/Migrations/CreateComponentChecksTableTest.php b/tests/Unit/Migrations/CreateComponentChecksTableTest.php index fb5dbd7f..cd7b34dc 100644 --- a/tests/Unit/Migrations/CreateComponentChecksTableTest.php +++ b/tests/Unit/Migrations/CreateComponentChecksTableTest.php @@ -14,7 +14,7 @@ ->with('component_checks', \Mockery::on(function (callable $callback) use (&$sql): bool { $connection = new MySqlConnection(new \PDO('sqlite::memory:'), 'testing'); $grammar = new MySqlGrammar($connection); - $blueprint = new Blueprint($connection, 'component_checks'); + $blueprint = new Blueprint('component_checks'); $blueprint->create(); $callback($blueprint);