Midday / apps /api /src /trpc /routers /apps.ts
Jules
Final deployment with all fixes and verified content
c09f67c
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,
});
}),
});