94 lines
3.3 KiB
TypeScript
94 lines
3.3 KiB
TypeScript
import { stringifyIO } from "@trigger.dev/core/v3";
|
|
import { type AuthenticatedEnvironment } from "~/services/apiAuth.server";
|
|
import { type TestTaskData } from "../testTask";
|
|
import { BaseService } from "./baseService.server";
|
|
import { TriggerTaskService } from "./triggerTask.server";
|
|
|
|
export class TestTaskService extends BaseService {
|
|
public async call(environment: AuthenticatedEnvironment, data: TestTaskData) {
|
|
const triggerTaskService = new TriggerTaskService();
|
|
const { triggerSource } = data;
|
|
|
|
switch (triggerSource) {
|
|
case "STANDARD": {
|
|
const result = await triggerTaskService.call(
|
|
data.taskIdentifier,
|
|
environment,
|
|
{
|
|
payload: data.payload,
|
|
options: {
|
|
test: true,
|
|
metadata: data.metadata,
|
|
delay: data.delaySeconds
|
|
? new Date(Date.now() + data.delaySeconds * 1000)
|
|
: undefined,
|
|
ttl: data.ttlSeconds,
|
|
idempotencyKey: data.idempotencyKey,
|
|
idempotencyKeyTTL: data.idempotencyKeyTTLSeconds
|
|
? `${data.idempotencyKeyTTLSeconds}s`
|
|
: undefined,
|
|
queue: data.queue ? { name: data.queue } : undefined,
|
|
concurrencyKey: data.concurrencyKey,
|
|
maxAttempts: data.maxAttempts,
|
|
maxDuration: data.maxDurationSeconds,
|
|
tags: data.tags,
|
|
machine: data.machine,
|
|
region: data.region,
|
|
lockToVersion: data.version === "latest" ? undefined : data.version,
|
|
priority: data.prioritySeconds,
|
|
},
|
|
},
|
|
{ triggerSource: "dashboard", triggerAction: "test" }
|
|
);
|
|
|
|
return result?.run;
|
|
}
|
|
case "SCHEDULED": {
|
|
const payload = {
|
|
scheduleId: "sched_1234",
|
|
type: "IMPERATIVE",
|
|
timestamp: data.timestamp,
|
|
lastTimestamp: data.lastTimestamp,
|
|
timezone: data.timezone,
|
|
externalId: data.externalId,
|
|
upcoming: [],
|
|
};
|
|
const payloadPacket = await stringifyIO(payload);
|
|
|
|
const result = await triggerTaskService.call(
|
|
data.taskIdentifier,
|
|
environment,
|
|
{
|
|
payload: payloadPacket.data,
|
|
options: {
|
|
payloadType: payloadPacket.dataType,
|
|
test: true,
|
|
ttl: data.ttlSeconds,
|
|
idempotencyKey: data.idempotencyKey,
|
|
idempotencyKeyTTL: data.idempotencyKeyTTLSeconds
|
|
? `${data.idempotencyKeyTTLSeconds}s`
|
|
: undefined,
|
|
queue: data.queue ? { name: data.queue } : undefined,
|
|
concurrencyKey: data.concurrencyKey,
|
|
maxAttempts: data.maxAttempts,
|
|
maxDuration: data.maxDurationSeconds,
|
|
tags: data.tags,
|
|
machine: data.machine,
|
|
region: data.region,
|
|
lockToVersion: data.version === "latest" ? undefined : data.version,
|
|
priority: data.prioritySeconds,
|
|
},
|
|
},
|
|
{ customIcon: "scheduled", triggerSource: "dashboard", triggerAction: "test" }
|
|
);
|
|
|
|
return result?.run;
|
|
}
|
|
default: {
|
|
triggerSource satisfies never;
|
|
throw new Error("Invalid trigger source");
|
|
}
|
|
}
|
|
}
|
|
}
|