Files
calendar/packages/app-store/routing-forms/lib/RoutingFormResponseDataFactory.ts
T
Benny JooandGitHub d908403a99 refactor: circular deps between app store and lib [1] (#23653)
* move dailyApiFetcher.ts to app store package

* update imports

* bookingLocationService

* revert

* move findFieldValueByIdentifier

* wip

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* move to features package

* update imports

* update imports

* move

* fix typechecks

* move getCalendarLinks

* mv event test
2025-09-09 14:38:29 +00:00

44 lines
1.4 KiB
TypeScript

import type logger from "@calcom/lib/logger";
import type { RoutingFormResponseRepositoryInterface } from "@calcom/lib/server/repository/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);
}
}