(params: {
workspaceId: string
email: string
})
| 137 | } |
| 138 | |
| 139 | export async function findPendingGrantForWorkspaceEmail(params: { |
| 140 | workspaceId: string |
| 141 | email: string |
| 142 | }) { |
| 143 | const normalized = normalizeEmail(params.email) |
| 144 | const [row] = await db |
| 145 | .select({ |
| 146 | invitationId: invitation.id, |
| 147 | grantId: invitationWorkspaceGrant.id, |
| 148 | }) |
| 149 | .from(invitationWorkspaceGrant) |
| 150 | .innerJoin(invitation, eq(invitation.id, invitationWorkspaceGrant.invitationId)) |
| 151 | .where( |
| 152 | and( |
| 153 | eq(invitationWorkspaceGrant.workspaceId, params.workspaceId), |
| 154 | eq(invitation.email, normalized), |
| 155 | eq(invitation.status, 'pending') |
| 156 | ) |
| 157 | ) |
| 158 | .limit(1) |
| 159 | return row ?? null |
| 160 | } |
| 161 | |
| 162 | export async function cancelPendingInvitation(invitationId: string): Promise<void> { |
| 163 | await db |
no test coverage detected