( provider: string )
| 71 | |
| 72 | /** Fetch all active webhooks for a provider, joined with their workflow. */ |
| 73 | export async function fetchActiveWebhooks( |
| 74 | provider: string |
| 75 | ): Promise<{ webhook: WebhookRecord; workflow: WorkflowRecord }[]> { |
| 76 | const rows = await db |
| 77 | .select({ webhook, workflow }) |
| 78 | .from(webhook) |
| 79 | .innerJoin(workflow, eq(webhook.workflowId, workflow.id)) |
| 80 | .leftJoin( |
| 81 | workflowDeploymentVersion, |
| 82 | and( |
| 83 | eq(workflowDeploymentVersion.workflowId, workflow.id), |
| 84 | eq(workflowDeploymentVersion.isActive, true) |
| 85 | ) |
| 86 | ) |
| 87 | .where( |
| 88 | and( |
| 89 | eq(webhook.provider, provider), |
| 90 | eq(webhook.isActive, true), |
| 91 | isNull(webhook.archivedAt), |
| 92 | eq(workflow.isDeployed, true), |
| 93 | isNull(workflow.archivedAt), |
| 94 | or( |
| 95 | eq(webhook.deploymentVersionId, workflowDeploymentVersion.id), |
| 96 | and(isNull(workflowDeploymentVersion.id), isNull(webhook.deploymentVersionId)) |
| 97 | ) |
| 98 | ) |
| 99 | ) |
| 100 | |
| 101 | return rows |
| 102 | } |
| 103 | |
| 104 | /** |
| 105 | * Run an async function over entries with bounded concurrency. |
no test coverage detected