* refactor: move repositories from lib to features domain folders - Move HolidayRepository to features/holidays/repositories - Move PrismaTrackingRepository to features/bookings/repositories - Move PrismaBookingPaymentRepository to features/bookings/repositories - Move PrismaRoutingFormResponseRepository to features/routing-forms/repositories - Move PrismaAssignmentReasonRepository to features/assignment-reason/repositories - Move VerificationTokenRepository to features/auth/repositories - Move WorkspacePlatformRepository to features/workspace-platform/repositories - Move DTO files to their respective feature domains - Merge lib DestinationCalendarRepository into features version - Merge lib SelectedCalendarRepository into features version - Update all import paths across the codebase This follows the vertical slice architecture pattern by organizing repositories by domain rather than by technical layer. Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * fix: update VerificationTokenService import path to new location Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * fix: update test file imports to use new repository locations Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * mv * fix structure * fix * refactor: merge unit tests for SelectedCalendarRepository into single file Co-Authored-By: benny@cal.com <sldisek783@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import type logger from "@calcom/lib/logger";
|
|
import type { RoutingFormResponseRepositoryInterface } from "@calcom/features/routing-forms/repositories/RoutingFormResponseRepository.interface";
|
|
|
|
import { parseRoutingFormResponse } from "./responseData/parseRoutingFormResponse";
|
|
|
|
interface Dependencies {
|
|
logger: typeof logger;
|
|
routingFormResponseRepo: RoutingFormResponseRepositoryInterface;
|
|
}
|
|
|
|
export class RoutingFormResponseDataFactory {
|
|
constructor(private readonly deps: Dependencies) {}
|
|
|
|
async createWithBookingUid(bookingUid: string) {
|
|
const log = this.deps.logger.getSubLogger({
|
|
prefix: ["[routingFormFieldService]", { bookingUid }],
|
|
});
|
|
|
|
const formResponse = await this.deps.routingFormResponseRepo.findByBookingUidIncludeForm(bookingUid);
|
|
|
|
if (!formResponse) {
|
|
log.error("Form response not found");
|
|
throw new Error("Form response not found");
|
|
}
|
|
|
|
return parseRoutingFormResponse(formResponse.response, formResponse.form.fields);
|
|
}
|
|
|
|
async createWithResponseId(responseId: number) {
|
|
const log = this.deps.logger.getSubLogger({
|
|
prefix: ["[routingFormFieldService]", { responseId }],
|
|
});
|
|
|
|
const formResponse = await this.deps.routingFormResponseRepo.findByIdIncludeForm(responseId);
|
|
|
|
if (!formResponse) {
|
|
log.error("Form response not found");
|
|
throw new Error("Form response not found");
|
|
}
|
|
|
|
return parseRoutingFormResponse(formResponse.response, formResponse.form.fields);
|
|
}
|
|
}
|