* getBulkEventTypes * 2 eventtypes related utils to features * locationsResolver * checkForEmptyAssignment * mv defaultEvents to features * update imports * PrismaAppRepository * mv currencyConversions from appstore to lib * useAppsData * videoClient * analytics files * fix * mv * prettier * use named import
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import logger from "@calcom/lib/logger";
|
|
import { safeStringify } from "@calcom/lib/safeStringify";
|
|
import { CredentialRepository } from "@calcom/lib/server/repository/credential";
|
|
|
|
import AnalyticsManager from "./analyticsManager";
|
|
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;
|
|
}
|
|
}
|