getKey(); if (! is_int($runId) || $runId <= 0) { return null; } $providerConnectionId = self::providerConnectionId($run); $query = OperationRun::query() ->where('tenant_id', (int) $run->tenant_id) ->where('workspace_id', (int) $run->workspace_id) ->where('type', (string) $run->type) ->where('run_identity_hash', (string) $run->run_identity_hash) ->where('status', OperationRunStatus::Completed->value) ->where('id', '<', $runId) ->orderByDesc('id'); if ($providerConnectionId !== null) { $query->where('context->provider_connection_id', $providerConnectionId); } else { $query->whereNull('context->provider_connection_id'); } $previousId = $query->value('id'); return is_int($previousId) ? $previousId : null; } private static function providerConnectionId(OperationRun $run): ?int { $context = $run->context; if (! is_array($context)) { return null; } $providerConnectionId = $context['provider_connection_id'] ?? null; if (is_int($providerConnectionId)) { return $providerConnectionId; } if (is_string($providerConnectionId) && ctype_digit(trim($providerConnectionId))) { return (int) trim($providerConnectionId); } return null; } }