Files
calendar/packages/features/tasker/tasks/analytics/sendAnalyticsEvent.ts
T
2025-05-22 09:18:45 -07:00

38 lines
1.3 KiB
TypeScript

import AnalyticsManager from "@calcom/lib/analyticsManager/analyticsManager";
import logger from "@calcom/lib/logger";
import { safeStringify } from "@calcom/lib/safeStringify";
import { CredentialRepository } from "@calcom/lib/server/repository/credential";
import { sendAnalyticsEventSchema } from "./schema";
const log = logger.getSubLogger({ prefix: [`[[tasker] sendAnalyticsEvent]`] });
export async function sendAnalyticsEvent(payload: string): Promise<void> {
try {
const parsedPayload = sendAnalyticsEventSchema.safeParse(JSON.parse(payload));
if (!parsedPayload.success) {
throw new Error(`malformed payload in sendAnalyticsEvent: ${parsedPayload.error}`);
}
const { credentialId, info } = parsedPayload.data;
const credential = await CredentialRepository.findFirstByIdWithKeyAndUser({ id: credentialId });
if (!credential) {
throw new Error("Invalid credential");
}
const manager = new AnalyticsManager(credential);
if (!manager) return;
await manager.sendEvent(info);
} catch (err) {
log.error(
`[Will retry] Error creating analytics event: error: ${safeStringify(err)} payload: ${safeStringify({
payload,
})}`
);
// Intentional rethrow to trigger retry
throw err;
}
}