Make Hatchet enqueue optional in dev
This commit is contained in:
@@ -1,12 +1,40 @@
|
|||||||
import { hatchet } from './hatchet-client.js';
|
|
||||||
import { workflowNames } from './workflow-names.js';
|
import { workflowNames } from './workflow-names.js';
|
||||||
|
|
||||||
export type ProcessVoiceExperienceInput = {
|
export type ProcessVoiceExperienceInput = {
|
||||||
experienceId: string;
|
experienceId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type HatchetClientLike = {
|
||||||
|
run: (workflowName: string, input: Record<string, unknown>) => Promise<unknown>;
|
||||||
|
runNoWait?: (workflowName: string, input: Record<string, unknown>) => Promise<unknown>;
|
||||||
|
};
|
||||||
|
|
||||||
|
let hatchet: HatchetClientLike | null = null;
|
||||||
|
let initDone = false;
|
||||||
|
|
||||||
|
async function ensureHatchetClient(): Promise<HatchetClientLike | null> {
|
||||||
|
if (initDone) return hatchet;
|
||||||
|
initDone = true;
|
||||||
|
|
||||||
|
if (!process.env.HATCHET_CLIENT_TOKEN) {
|
||||||
|
console.warn('[hatchet] HATCHET_CLIENT_TOKEN is not set, workflow trigger skipped');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const sdk = await import('@hatchet-dev/typescript-sdk');
|
||||||
|
hatchet = sdk.HatchetClient.init() as unknown as HatchetClientLike;
|
||||||
|
return hatchet;
|
||||||
|
}
|
||||||
|
|
||||||
export async function enqueueVoiceExperience(
|
export async function enqueueVoiceExperience(
|
||||||
input: ProcessVoiceExperienceInput,
|
input: ProcessVoiceExperienceInput,
|
||||||
) {
|
) {
|
||||||
await hatchet.admin.runWorkflow(workflowNames.processVoiceExperience, input);
|
const client = await ensureHatchetClient();
|
||||||
|
if (!client) return { triggered: false };
|
||||||
|
|
||||||
|
const runRef = client.runNoWait
|
||||||
|
? await client.runNoWait(workflowNames.processVoiceExperience, input)
|
||||||
|
: await client.run(workflowNames.processVoiceExperience, input);
|
||||||
|
|
||||||
|
return { triggered: true, runRef };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user