mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
3c57960b7d
* feat: remove attendee endpoint * fix: remove attendee email from error logs to avoid logging PII Co-Authored-By: unknown <> * fix: add isBookingAuditEnabled to removeAttendee handler Align removeAttendee.handler.ts with the new onAttendeeRemoved interface that requires isBookingAuditEnabled, following the same pattern used in addGuests.handler.ts. Co-Authored-By: bot_apk <[email protected]> * style: apply biome formatting to conflict-resolved files Co-Authored-By: bot_apk <[email protected]> * chore: implement PR feedback * fixup * revert: biome formatting changes * chore: implement feedback part 1 * chore: implement feedback part 2 * fix: await cancellation email flow to prevent uncaught promise rejections The fire-and-forget .then() chain on prepareAttendeePerson() left rejections from that promise uncaught. Await both prepareAttendeePerson() and sendCancelledEmailToAttendee() so errors are properly handled. sendCancelledEmailToAttendee() already has an internal try/catch, so awaiting it will not cause the overall removeAttendee flow to fail on email errors. Addresses Cubic AI review (confidence 9/10). Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * chore: implement feedback part 3 * chore: implement devin feedback --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: bot_apk <[email protected]>
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
import type { Booking, Prisma, User } from "@calcom/prisma/client";
|
|
import { TestingModule } from "@nestjs/testing";
|
|
import { PrismaReadService } from "@/modules/prisma/prisma-read.service";
|
|
import { PrismaWriteService } from "@/modules/prisma/prisma-write.service";
|
|
|
|
export class BookingsRepositoryFixture {
|
|
private prismaReadClient: PrismaReadService["prisma"];
|
|
private prismaWriteClient: PrismaWriteService["prisma"];
|
|
|
|
constructor(module: TestingModule) {
|
|
this.prismaReadClient = module.get(PrismaReadService).prisma;
|
|
this.prismaWriteClient = module.get(PrismaWriteService).prisma;
|
|
}
|
|
|
|
async getById(bookingId: Booking["id"]) {
|
|
return this.prismaReadClient.booking.findFirst({ where: { id: bookingId } });
|
|
}
|
|
|
|
async getByUid(bookingUid: Booking["uid"]) {
|
|
return this.prismaReadClient.booking.findUnique({ where: { uid: bookingUid } });
|
|
}
|
|
|
|
async getByUidWithAttendees(bookingUid: Booking["uid"]) {
|
|
return this.prismaReadClient.booking.findUnique({
|
|
where: { uid: bookingUid },
|
|
include: { attendees: true },
|
|
});
|
|
}
|
|
|
|
async getByRecurringBookingUid(recurringBookingUid: string) {
|
|
return this.prismaReadClient.booking.findMany({
|
|
where: {
|
|
recurringEventId: recurringBookingUid,
|
|
},
|
|
});
|
|
}
|
|
|
|
async create(booking: Prisma.BookingCreateInput) {
|
|
return this.prismaWriteClient.booking.create({ data: booking });
|
|
}
|
|
|
|
async deleteById(bookingId: Booking["id"]) {
|
|
return this.prismaWriteClient.booking.deleteMany({ where: { id: bookingId } });
|
|
}
|
|
|
|
async deleteAllBookings(userId: User["id"], userEmail: User["email"]) {
|
|
return this.prismaWriteClient.booking.deleteMany({ where: { userId, userPrimaryEmail: userEmail } });
|
|
}
|
|
|
|
async getAttendeesByBookingId(bookingId: Booking["id"]) {
|
|
return this.prismaReadClient.attendee.findMany({
|
|
where: { bookingId },
|
|
orderBy: { id: "asc" },
|
|
});
|
|
}
|
|
}
|