Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
1.0 kB ยท 35 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536import { and, eq } from "@openstatus/db";import { slackUser } from "@openstatus/db/src/schema";
import { emitAudit } from "../audit";import type { DB, ServiceContext } from "../context";
export async function deleteSlackUserMappings(args: { tx: DB; ctx: ServiceContext; where: { userId: number } | { slackTeamId: string } | { id: number };}): Promise<number> { const { tx, ctx, where } = args; const filter = "userId" in where ? eq(slackUser.userId, where.userId) : "slackTeamId" in where ? eq(slackUser.slackTeamId, where.slackTeamId) : eq(slackUser.id, where.id);
const removed = await tx .delete(slackUser) .where(and(eq(slackUser.workspaceId, ctx.workspace.id), filter)) .returning();
for (const row of removed) { await emitAudit(tx, ctx, { action: "slack_user.delete", entityType: "slack_user", entityId: row.id, before: row, metadata: { slackTeamId: row.slackTeamId, userId: row.userId }, }); } return removed.length;}