File size: 1,946 Bytes
c09f67c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | import {
disconnectAppSchema,
removeWhatsAppConnectionSchema,
updateAppSettingsSchema,
} from "@api/schemas/apps";
import { createTRPCRouter, protectedProcedure } from "@api/trpc/init";
import {
disconnectApp,
getApps,
removeWhatsAppConnection,
updateAppSettings,
updateAppSettingsBulk,
} from "@midday/db/queries";
import { z } from "zod";
export const appsRouter = createTRPCRouter({
get: protectedProcedure.query(async ({ ctx: { db, teamId } }) => {
return getApps(db, teamId!);
}),
disconnect: protectedProcedure
.input(disconnectAppSchema)
.mutation(async ({ ctx: { db, teamId }, input }) => {
const { appId } = input;
return disconnectApp(db, { appId, teamId: teamId! });
}),
update: protectedProcedure
.input(updateAppSettingsSchema)
.mutation(async ({ ctx: { db, teamId }, input }) => {
const { appId, option } = input;
return updateAppSettings(db, {
appId,
teamId: teamId!,
option,
});
}),
updateSettings: protectedProcedure
.input(
z.object({
appId: z.string(),
settings: z.array(
z.object({
id: z.string(),
label: z.string().optional(),
description: z.string().optional(),
type: z.string().optional(),
required: z.boolean().optional(),
value: z.unknown(),
}),
),
}),
)
.mutation(async ({ ctx: { db, teamId }, input }) => {
const { appId, settings } = input;
return updateAppSettingsBulk(db, {
appId,
teamId: teamId!,
settings,
});
}),
removeWhatsAppConnection: protectedProcedure
.input(removeWhatsAppConnectionSchema)
.mutation(async ({ ctx: { db, teamId }, input }) => {
const { phoneNumber } = input;
return removeWhatsAppConnection(db, {
teamId: teamId!,
phoneNumber,
});
}),
});
|