fix(data): migrate WOs from ghost tenants into psauto company
One-time data migration that moves work orders created with wrong company_id (Octane singleton race condition) back into psauto. Only moves WOs from companies that have zero users (ghost/test tenants), so legitimate separate companies are not affected. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
/**
|
||||
* One-time data fix: work orders created with wrong company_id due to
|
||||
* FrankenPHP/Octane singleton race condition on TenantManager.
|
||||
*
|
||||
* Moves all WOs that don't belong to the 'psauto' company into it,
|
||||
* but only if the source company has no users (i.e. it's a ghost/test
|
||||
* tenant, not a real separate company with its own data).
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
$psauto = DB::table('companies')->where('slug', 'psauto')->first();
|
||||
if (! $psauto) {
|
||||
return; // psauto doesn't exist on this environment — skip
|
||||
}
|
||||
|
||||
// Find companies that have WOs but are NOT psauto
|
||||
$otherCompanyIds = DB::table('work_orders')
|
||||
->whereNull('deleted_at')
|
||||
->where('company_id', '!=', $psauto->id)
|
||||
->pluck('company_id')
|
||||
->unique();
|
||||
|
||||
foreach ($otherCompanyIds as $companyId) {
|
||||
// Only move if that company has no users (ghost/test tenant)
|
||||
$userCount = DB::table('users')->where('company_id', $companyId)->count();
|
||||
if ($userCount > 0) {
|
||||
continue; // Real company with users — leave its WOs alone
|
||||
}
|
||||
|
||||
$moved = DB::table('work_orders')
|
||||
->whereNull('deleted_at')
|
||||
->where('company_id', $companyId)
|
||||
->update(['company_id' => $psauto->id]);
|
||||
|
||||
\Illuminate\Support\Facades\Log::info(
|
||||
"Migration fix_work_orders_company_id: moved {$moved} WOs from company_id={$companyId} to psauto company_id={$psauto->id}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
// Not reversible — data migration only
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user