Openstatus www.openstatus.dev
at 4c0f4c00a38753a5d0dfd7e7b7b7706dec6f1503 37 lines 953 B view raw
1import { z } from "zod"; 2 3import { and, eq } from "@openstatus/db"; 4import { 5 insertIntegrationSchema, 6 integration, 7} from "@openstatus/db/src/schema"; 8 9import { createTRPCRouter, protectedProcedure } from "../trpc"; 10 11export const integrationRouter = createTRPCRouter({ 12 createIntegration: protectedProcedure 13 .input( 14 z.object({ workspaceSlug: z.string(), input: insertIntegrationSchema }), 15 ) 16 .mutation(async (opts) => { 17 const exists = await opts.ctx.db 18 .select() 19 .from(integration) 20 .where( 21 and( 22 eq(integration.workspaceId, opts.ctx.workspace.id), 23 eq(integration.externalId, opts.input.input.externalId), 24 ), 25 ) 26 .get(); 27 28 if (exists) { 29 return; 30 } 31 await opts.ctx.db 32 .insert(integration) 33 .values({ ...opts.input.input, workspaceId: opts.ctx.workspace.id }) 34 .returning() 35 .get(); 36 }), 37});