Files
calendar/packages/trpc/server/routers/viewer/attributes/toggleActive.handler.ts
T
08e1b0a9c8 feat: attributes (#15964)
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
2024-08-15 14:49:05 -07:00

62 lines
1.3 KiB
TypeScript

import prisma from "@calcom/prisma";
import { TRPCError } from "@trpc/server";
import type { TrpcSessionUser } from "../../../trpc";
import type { ZToggleActiveSchema } from "./toggleActive.schema";
type GetOptions = {
ctx: {
user: NonNullable<TrpcSessionUser>;
};
input: ZToggleActiveSchema;
};
const toggleActiveHandler = async ({ input, ctx }: GetOptions) => {
const org = ctx.user.organization;
if (!org.id) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to be apart of an organization to use this feature",
});
}
// Ensure that this users org owns the attribute
const attribute = await prisma.attribute.findUnique({
where: {
id: input.attributeId,
teamId: org.id,
},
select: {
id: true,
enabled: true,
},
});
if (!attribute) {
throw new TRPCError({
code: "NOT_FOUND",
message: "Attribute not found",
});
}
// Toggle the attribute
await prisma.attribute.update({
where: {
id: input.attributeId,
},
data: {
enabled: !attribute.enabled,
},
});
// Save us refetching the attribute to get the correct value
return {
...attribute,
enabled: !attribute.enabled,
};
};
export default toggleActiveHandler;