Files
calendar/packages/app-store/_utils/bulkUpdateTeamEventsToDefaultLocation.ts
T
Benny JooandGitHub 9156848503 refactor: circular deps between app store and lib [2] (#23734)
* mv getDefaultLocations

* fix

* 2 more utils

* update imports

* fix

* move getConnectedApps

* move handlePaymentSuccess

* update imports

* fix import

* publish platform libraries
2025-09-10 23:18:59 -03:00

57 lines
1.4 KiB
TypeScript

import type { PrismaClient } from "@calcom/prisma";
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
import type { LocationObject } from "../locations";
import { getAppFromSlug } from "../utils";
export const bulkUpdateTeamEventsToDefaultLocation = async ({
eventTypeIds,
teamId,
prisma,
}: {
eventTypeIds: number[];
teamId: number;
prisma: PrismaClient;
}) => {
const team = await prisma.team.findUnique({
where: { id: teamId },
select: { metadata: true },
});
const metadataResult = teamMetadataSchema.safeParse(team?.metadata);
const defaultApp = metadataResult.success ? metadataResult.data?.defaultConferencingApp : null;
if (!defaultApp) {
throw new Error("Default conferencing app not set");
}
const foundApp = getAppFromSlug(defaultApp.appSlug);
const appType = foundApp?.appData?.location?.type;
if (!appType) {
throw new Error(`Default conferencing app '${defaultApp.appSlug}' doesnt exist.`);
}
const credential = await prisma.credential.findFirst({
where: {
teamId,
appId: foundApp.slug,
},
select: {
id: true,
},
});
return await prisma.eventType.updateMany({
where: {
id: {
in: eventTypeIds,
},
teamId,
},
data: {
locations: [
{ type: appType, link: defaultApp.appLink, credentialId: credential?.id },
] as LocationObject[],
},
});
};