*/ class OperationRunFactory extends Factory { protected $model = OperationRun::class; public function definition(): array { return [ 'tenant_id' => Tenant::factory()->for(Workspace::factory()), 'workspace_id' => function (array $attributes): int { $tenantId = $attributes['tenant_id'] ?? null; if (! is_numeric($tenantId)) { return (int) Workspace::factory()->create()->getKey(); } $tenant = Tenant::query()->whereKey((int) $tenantId)->first(); if (! $tenant instanceof Tenant) { return (int) Workspace::factory()->create()->getKey(); } if ($tenant->workspace_id === null) { $workspaceId = (int) Workspace::factory()->create()->getKey(); $tenant->forceFill(['workspace_id' => $workspaceId])->save(); return $workspaceId; } return (int) $tenant->workspace_id; }, 'user_id' => User::factory(), 'initiator_name' => fake()->name(), 'type' => fake()->randomElement(OperationRunType::values()), 'status' => OperationRunStatus::Queued->value, 'outcome' => OperationRunOutcome::Pending->value, 'run_identity_hash' => fake()->sha256(), 'summary_counts' => [], 'failure_summary' => [], 'context' => [], 'started_at' => null, 'completed_at' => null, ]; } }