MCPcopy Index your code
hub / github.com/simstudioai/sim / hydrateInvitation

Function hydrateInvitation

apps/sim/lib/invitations/core.ts:79–132  ·  view source on GitHub ↗
(
  row: typeof invitation.$inferSelect
)

Source from the content-addressed store, hash-verified

77}
78
79async function hydrateInvitation(
80 row: typeof invitation.$inferSelect
81): Promise<InvitationWithGrants> {
82 const grantRows = await db
83 .select({
84 id: invitationWorkspaceGrant.id,
85 workspaceId: invitationWorkspaceGrant.workspaceId,
86 permission: invitationWorkspaceGrant.permission,
87 workspaceName: workspace.name,
88 })
89 .from(invitationWorkspaceGrant)
90 .leftJoin(workspace, eq(workspace.id, invitationWorkspaceGrant.workspaceId))
91 .where(eq(invitationWorkspaceGrant.invitationId, row.id))
92
93 let organizationName: string | null = null
94 if (row.organizationId) {
95 const [orgRow] = await db
96 .select({ name: organization.name })
97 .from(organization)
98 .where(eq(organization.id, row.organizationId))
99 .limit(1)
100 organizationName = orgRow?.name ?? null
101 }
102
103 const [inviterRow] = await db
104 .select({ name: user.name, email: user.email })
105 .from(user)
106 .where(eq(user.id, row.inviterId))
107 .limit(1)
108
109 return {
110 id: row.id,
111 kind: row.kind,
112 email: row.email,
113 organizationId: row.organizationId,
114 membershipIntent: row.membershipIntent,
115 inviterId: row.inviterId,
116 role: row.role,
117 status: row.status,
118 token: row.token,
119 expiresAt: row.expiresAt,
120 createdAt: row.createdAt,
121 updatedAt: row.updatedAt,
122 grants: grantRows.map((grant) => ({
123 id: grant.id,
124 workspaceId: grant.workspaceId,
125 permission: grant.permission,
126 workspaceName: grant.workspaceName,
127 })),
128 organizationName,
129 inviterName: inviterRow?.name ?? null,
130 inviterEmail: inviterRow?.email ?? null,
131 }
132}
133
134export function isInvitationExpired(inv: Pick<InvitationWithGrants, 'expiresAt'>): boolean {
135 return new Date() > new Date(inv.expiresAt)

Callers 2

getInvitationByIdFunction · 0.85
getInvitationByTokenFunction · 0.85

Calls 1

eqFunction · 0.50

Tested by

no test coverage detected