Skip to content

Commit e2d36a5

Browse files
committed
Add triggerSource, concurrencyKey and ttl to run templates
1 parent e047c6f commit e2d36a5

File tree

5 files changed

+38
-28
lines changed

5 files changed

+38
-28
lines changed

apps/webapp/app/presenters/v3/TestTaskPresenter.server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ export class TestTaskPresenter {
177177
where: {
178178
projectId,
179179
taskSlug: task.slug,
180+
triggerSource: task.triggerSource,
180181
},
181182
orderBy: {
182183
createdAt: "desc",

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.test.tasks.$taskParam/route.tsx

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ import { TaskRunStatusCombo } from "~/components/runs/v3/TaskRunStatus";
6767
import { ClockRotateLeftIcon } from "~/assets/icons/ClockRotateLeftIcon";
6868
import { MachinePresetName } from "@trigger.dev/core/v3";
6969
import { TaskTriggerSourceIcon } from "~/components/runs/v3/TaskTriggerSource";
70-
import { Callout } from "~/components/primitives/Callout";
7170
import { TaskRunTemplateService } from "~/v3/services/taskRunTemplate.server";
7271
import { DeleteTaskRunTemplateService } from "~/v3/services/deleteTaskRunTemplate.server";
7372
import { DeleteTaskRunTemplateData, RunTemplateData } from "~/v3/taskRunTemplate";
@@ -277,6 +276,7 @@ export default function Page() {
277276
}, [queueFetcher.data?.queues, defaultTaskQueue]);
278277

279278
const { triggerSource } = result;
279+
280280
switch (triggerSource) {
281281
case "STANDARD": {
282282
return (
@@ -345,7 +345,7 @@ function StandardTaskForm({
345345
? actionData
346346
: undefined;
347347

348-
const lastRun = runs[0];
348+
const lastRun = runs.at(0);
349349

350350
const [defaultPayloadJson, setDefaultPayloadJson] = useState<string>(
351351
lastRun?.payload ?? startingJson
@@ -443,13 +443,13 @@ function StandardTaskForm({
443443
onTemplateSelected={(template) => {
444444
setPayload(template.payload ?? "");
445445
setMetadata(template.metadata ?? "");
446-
// setTtlValue(template.ttlSeconds ?? "");
447-
// setConcurrencyKeyValue(template.concurrencyKey ?? "");
446+
setTtlValue(template.ttlSeconds ?? 0);
447+
setConcurrencyKeyValue(template.concurrencyKey ?? "");
448448
setMaxAttemptsValue(template.maxAttempts ?? undefined);
449-
setMaxDurationValue(template.maxDurationSeconds ?? undefined);
450-
setMachineValue(template.machinePreset ?? undefined);
449+
setMaxDurationValue(template.maxDurationSeconds ?? 0);
450+
setMachineValue(template.machinePreset ?? "");
451451
setTagsValue(template.tags ?? []);
452-
setQueueValue(template.queue);
452+
setQueueValue(template.queue ?? undefined);
453453
}}
454454
showTemplateCreatedSuccessMessage={showTemplateCreatedSuccessMessage}
455455
/>
@@ -806,18 +806,18 @@ function ScheduledTaskForm({
806806
}) {
807807
const environment = useEnvironment();
808808

809-
const lastRun = runs[0];
809+
const lastRun = runs.at(0);
810810

811811
const [timestampValue, setTimestampValue] = useState<Date | undefined>(
812-
lastRun.payload.timestamp ?? new Date()
812+
lastRun?.payload?.timestamp ?? new Date()
813813
);
814814
const [lastTimestampValue, setLastTimestampValue] = useState<Date | undefined>(
815-
lastRun.payload.lastTimestamp
815+
lastRun?.payload?.lastTimestamp
816816
);
817817
const [externalIdValue, setExternalIdValue] = useState<string | undefined>(
818-
lastRun.payload.externalId
818+
lastRun?.payload?.externalId
819819
);
820-
const [timezoneValue, setTimezoneValue] = useState<string>(lastRun.payload.timezone ?? "UTC");
820+
const [timezoneValue, setTimezoneValue] = useState<string>(lastRun?.payload?.timezone ?? "UTC");
821821
const [ttlValue, setTtlValue] = useState<number | undefined>(lastRun?.ttlSeconds);
822822
const [concurrencyKeyValue, setConcurrencyKeyValue] = useState<string | undefined>(
823823
lastRun?.concurrencyKey
@@ -908,13 +908,14 @@ function ScheduledTaskForm({
908908
<RunTemplatesPopover
909909
templates={templates}
910910
onTemplateSelected={(template) => {
911-
// setTtlValue(template.ttlSeconds ?? "");
912-
// setConcurrencyKeyValue(template.concurrencyKey ?? "");
911+
setTtlValue(template.ttlSeconds ?? 0);
912+
setConcurrencyKeyValue(template.concurrencyKey ?? "");
913913
setMaxAttemptsValue(template.maxAttempts ?? undefined);
914-
setMaxDurationValue(template.maxDurationSeconds ?? undefined);
915-
setMachineValue(template.machinePreset ?? undefined);
914+
setMaxDurationValue(template.maxDurationSeconds ?? 0);
915+
setMachineValue(template.machinePreset ?? "");
916916
setTagsValue(template.tags ?? []);
917-
setQueueValue(template.queue);
917+
setQueueValue(template.queue ?? undefined);
918+
918919
setTimestampValue(template.scheduledTaskPayload?.timestamp);
919920
setLastTimestampValue(template.scheduledTaskPayload?.lastTimestamp);
920921
setExternalIdValue(template.scheduledTaskPayload?.externalId);
@@ -1413,7 +1414,7 @@ function RunTemplatesPopover({
14131414
className="flex-1 text-left outline-none focus-custom"
14141415
>
14151416
<div className="flex flex-col items-start">
1416-
<Paragraph variant="small" className="truncate">
1417+
<Paragraph variant="small/bright" className="truncate">
14171418
{template.label}
14181419
</Paragraph>
14191420
<div className="flex items-center gap-2 text-xs text-text-dimmed">

apps/webapp/app/v3/services/taskRunTemplate.server.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ export class TaskRunTemplateService extends BaseService {
3030
const taskRunTemplate = await this._prisma.taskRunTemplate.create({
3131
data: {
3232
taskSlug: data.taskIdentifier,
33+
triggerSource: "STANDARD",
3334
label: data.label,
3435
payload: packet.data,
3536
payloadType: packet.dataType,
3637
metadata: metadataPacket?.data,
3738
metadataType: metadataPacket?.dataType,
38-
queue: data.queue ?? "default",
39-
delaySeconds: data.delaySeconds,
39+
queue: data.queue,
40+
ttlSeconds: data.ttlSeconds,
41+
concurrencyKey: data.concurrencyKey,
4042
maxAttempts: data.maxAttempts,
4143
maxDurationSeconds: data.maxDurationSeconds,
4244
tags: data.tags ?? [],
@@ -63,11 +65,13 @@ export class TaskRunTemplateService extends BaseService {
6365
const taskRunTemplate = await this._prisma.taskRunTemplate.create({
6466
data: {
6567
taskSlug: data.taskIdentifier,
68+
triggerSource: "SCHEDULED",
6669
label: data.label,
6770
payload: payloadPacket.data,
6871
payloadType: payloadPacket.dataType,
69-
queue: data.queue ?? "default",
70-
delaySeconds: data.delaySeconds,
72+
queue: data.queue,
73+
ttlSeconds: data.ttlSeconds,
74+
concurrencyKey: data.concurrencyKey,
7175
maxAttempts: data.maxAttempts,
7276
maxDurationSeconds: data.maxDurationSeconds,
7377
tags: data.tags ?? [],
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
CREATE TABLE "TaskRunTemplate" (
22
"id" TEXT NOT NULL,
33
"taskSlug" TEXT NOT NULL,
4+
"triggerSource" "TaskTriggerSource" NOT NULL,
45
"label" TEXT NOT NULL,
56
"payload" TEXT,
67
"payloadType" TEXT NOT NULL DEFAULT 'application/json',
78
"metadata" TEXT,
89
"metadataType" TEXT NOT NULL DEFAULT 'application/json',
9-
"queue" TEXT NOT NULL,
10-
"delaySeconds" INTEGER,
10+
"queue" TEXT,
11+
"concurrencyKey" TEXT,
12+
"ttlSeconds" INTEGER,
1113
"maxAttempts" INTEGER,
1214
"maxDurationSeconds" INTEGER,
1315
"tags" TEXT[],
@@ -20,4 +22,4 @@ CREATE TABLE "TaskRunTemplate" (
2022
CONSTRAINT "TaskRunTemplate_pkey" PRIMARY KEY ("id")
2123
);
2224

23-
CREATE INDEX "TaskRunTemplate_projectId_taskSlug_createdAt_idx" ON "TaskRunTemplate"("projectId", "taskSlug", "createdAt" DESC);
25+
CREATE INDEX "TaskRunTemplate_projectId_taskSlug_triggerSource_createdAt_idx" ON "TaskRunTemplate"("projectId", "taskSlug", "triggerSource", "createdAt" DESC);

internal-packages/database/prisma/schema.prisma

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -720,15 +720,17 @@ model TaskRunTemplate {
720720
id String @id @default(cuid())
721721
722722
taskSlug String
723+
triggerSource TaskTriggerSource
723724
724725
label String
725726
726727
payload String?
727728
payloadType String @default("application/json")
728729
metadata String?
729730
metadataType String @default("application/json")
730-
queue String
731-
delaySeconds Int?
731+
queue String?
732+
concurrencyKey String?
733+
ttlSeconds Int?
732734
maxAttempts Int?
733735
maxDurationSeconds Int?
734736
tags String[]
@@ -740,7 +742,7 @@ model TaskRunTemplate {
740742
createdAt DateTime @default(now())
741743
updatedAt DateTime @updatedAt
742744
743-
@@index([projectId, taskSlug, createdAt(sort: Desc)])
745+
@@index([projectId, taskSlug, triggerSource, createdAt(sort: Desc)])
744746
}
745747

746748
enum TaskRunStatus {

0 commit comments

Comments
 (0)