1
1
import { ScheduledTaskPayload , parsePacket , prettyPrintPacket } from "@trigger.dev/core/v3" ;
2
- import { type RuntimeEnvironmentType , type TaskRunStatus } from "@trigger.dev/database" ;
2
+ import {
3
+ type TaskRunTemplate ,
4
+ type RuntimeEnvironmentType ,
5
+ type TaskRunStatus ,
6
+ } from "@trigger.dev/database" ;
3
7
import { type PrismaClient , prisma , sqlDatabaseSchema } from "~/db.server" ;
4
8
import { getTimezones } from "~/utils/timezones.server" ;
5
9
import { findCurrentWorkerDeployment } from "~/v3/models/workerDeployment.server" ;
6
10
import { queueTypeFromType } from "./QueueRetrievePresenter.server" ;
7
11
import parse from "parse-duration" ;
8
12
13
+ export type RunTemplate = TaskRunTemplate & {
14
+ scheduledTaskPayload ?: ScheduledRun [ "payload" ] ;
15
+ } ;
16
+
9
17
type TestTaskOptions = {
10
18
userId : string ;
11
19
projectId : string ;
@@ -40,6 +48,7 @@ export type TestTaskResult =
40
48
latestVersions : string [ ] ;
41
49
disableVersionSelection : boolean ;
42
50
allowArbitraryQueues : boolean ;
51
+ taskRunTemplates : TaskRunTemplate [ ] ;
43
52
}
44
53
| {
45
54
foundTask : true ;
@@ -51,6 +60,7 @@ export type TestTaskResult =
51
60
latestVersions : string [ ] ;
52
61
disableVersionSelection : boolean ;
53
62
allowArbitraryQueues : boolean ;
63
+ taskRunTemplates : TaskRunTemplate [ ] ;
54
64
}
55
65
| {
56
66
foundTask : false ;
@@ -163,6 +173,18 @@ export class TestTaskPresenter {
163
173
take : 20 , // last 20 versions should suffice
164
174
} ) ;
165
175
176
+ const taskRunTemplates = await this . #prismaClient. taskRunTemplate . findMany ( {
177
+ where : {
178
+ projectId,
179
+ taskSlug : task . slug ,
180
+ triggerSource : task . triggerSource ,
181
+ } ,
182
+ orderBy : {
183
+ createdAt : "desc" ,
184
+ } ,
185
+ take : 50 ,
186
+ } ) ;
187
+
166
188
const latestVersions = backgroundWorkers . map ( ( v ) => v . version ) ;
167
189
168
190
const disableVersionSelection = environment . type === "DEVELOPMENT" ;
@@ -247,6 +269,13 @@ export class TestTaskPresenter {
247
269
latestVersions,
248
270
disableVersionSelection,
249
271
allowArbitraryQueues,
272
+ taskRunTemplates : await Promise . all (
273
+ taskRunTemplates . map ( async ( t ) => ( {
274
+ ...t ,
275
+ payload : await prettyPrintPacket ( t . payload , t . payloadType ) ,
276
+ metadata : t . metadata ? await prettyPrintPacket ( t . metadata , t . metadataType ) : null ,
277
+ } ) )
278
+ ) ,
250
279
} ;
251
280
case "SCHEDULED" : {
252
281
const possibleTimezones = getTimezones ( ) ;
@@ -266,7 +295,7 @@ export class TestTaskPresenter {
266
295
runs : (
267
296
await Promise . all (
268
297
latestRuns . map ( async ( r ) => {
269
- const payload = await getScheduleTaskRunPayload ( r ) ;
298
+ const payload = await getScheduleTaskRunPayload ( r . payload , r . payloadType ) ;
270
299
271
300
if ( payload . success ) {
272
301
return {
@@ -281,6 +310,21 @@ export class TestTaskPresenter {
281
310
latestVersions,
282
311
disableVersionSelection,
283
312
allowArbitraryQueues,
313
+ taskRunTemplates : await Promise . all (
314
+ taskRunTemplates . map ( async ( t ) => {
315
+ const scheduledTaskPayload = t . payload
316
+ ? await getScheduleTaskRunPayload ( t . payload , t . payloadType )
317
+ : undefined ;
318
+
319
+ return {
320
+ ...t ,
321
+ scheduledTaskPayload :
322
+ scheduledTaskPayload && scheduledTaskPayload . success
323
+ ? scheduledTaskPayload . data
324
+ : undefined ,
325
+ } ;
326
+ } )
327
+ ) ,
284
328
} ;
285
329
}
286
330
default : {
@@ -290,11 +334,11 @@ export class TestTaskPresenter {
290
334
}
291
335
}
292
336
293
- async function getScheduleTaskRunPayload ( run : RawRun ) {
294
- const payload = await parsePacket ( { data : run . payload , dataType : run . payloadType } ) ;
295
- if ( ! payload . timezone ) {
296
- payload . timezone = "UTC" ;
337
+ async function getScheduleTaskRunPayload ( payload : string , payloadType : string ) {
338
+ const packet = await parsePacket ( { data : payload , dataType : payloadType } ) ;
339
+ if ( ! packet . timezone ) {
340
+ packet . timezone = "UTC" ;
297
341
}
298
- const parsed = ScheduledTaskPayload . safeParse ( payload ) ;
342
+ const parsed = ScheduledTaskPayload . safeParse ( packet ) ;
299
343
return parsed ;
300
344
}
0 commit comments