@@ -22,7 +22,7 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
22
22
showSecretDetails : boolean
23
23
) : Promise < RetrieveRunResponse | undefined > {
24
24
return this . traceWithEnv ( "call" , env , async ( span ) => {
25
- const taskRun = await this . _prisma . taskRun . findUnique ( {
25
+ const taskRun = await this . _replica . taskRun . findFirst ( {
26
26
where : {
27
27
friendlyId,
28
28
runtimeEnvironmentId : env . id ,
@@ -36,6 +36,94 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
36
36
lockedToVersion : true ,
37
37
schedule : true ,
38
38
tags : true ,
39
+ parentTaskRun : {
40
+ select : {
41
+ id : true ,
42
+ friendlyId : true ,
43
+ status : true ,
44
+ taskIdentifier : true ,
45
+ createdAt : true ,
46
+ startedAt : true ,
47
+ updatedAt : true ,
48
+ completedAt : true ,
49
+ expiredAt : true ,
50
+ delayUntil : true ,
51
+ ttl : true ,
52
+ tags : true ,
53
+ costInCents : true ,
54
+ baseCostInCents : true ,
55
+ usageDurationMs : true ,
56
+ idempotencyKey : true ,
57
+ isTest : true ,
58
+ depth : true ,
59
+ lockedToVersion : {
60
+ select : {
61
+ version : true ,
62
+ } ,
63
+ } ,
64
+ } ,
65
+ } ,
66
+ rootTaskRun : {
67
+ select : {
68
+ id : true ,
69
+ friendlyId : true ,
70
+ status : true ,
71
+ taskIdentifier : true ,
72
+ createdAt : true ,
73
+ startedAt : true ,
74
+ updatedAt : true ,
75
+ completedAt : true ,
76
+ expiredAt : true ,
77
+ delayUntil : true ,
78
+ ttl : true ,
79
+ tags : true ,
80
+ costInCents : true ,
81
+ baseCostInCents : true ,
82
+ usageDurationMs : true ,
83
+ idempotencyKey : true ,
84
+ isTest : true ,
85
+ depth : true ,
86
+ lockedToVersion : {
87
+ select : {
88
+ version : true ,
89
+ } ,
90
+ } ,
91
+ } ,
92
+ } ,
93
+ childRuns : {
94
+ select : {
95
+ id : true ,
96
+ taskIdentifier : true ,
97
+ friendlyId : true ,
98
+ resumeParentOnCompletion : true ,
99
+ status : true ,
100
+ createdAt : true ,
101
+ startedAt : true ,
102
+ updatedAt : true ,
103
+ completedAt : true ,
104
+ expiredAt : true ,
105
+ delayUntil : true ,
106
+ ttl : true ,
107
+ tags : true ,
108
+ costInCents : true ,
109
+ baseCostInCents : true ,
110
+ usageDurationMs : true ,
111
+ idempotencyKey : true ,
112
+ isTest : true ,
113
+ depth : true ,
114
+ lockedToVersion : {
115
+ select : {
116
+ version : true ,
117
+ } ,
118
+ } ,
119
+ batch : {
120
+ select : {
121
+ id : true ,
122
+ friendlyId : true ,
123
+ } ,
124
+ } ,
125
+ } ,
126
+ } ,
39
127
} ,
40
128
} ) ;
41
129
@@ -124,6 +212,7 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
124
212
costInCents : taskRun . costInCents ,
125
213
baseCostInCents : taskRun . baseCostInCents ,
126
214
durationMs : taskRun . usageDurationMs ,
215
+ depth : taskRun . depth ,
127
216
schedule : taskRun . schedule
128
217
? {
129
218
id : taskRun . schedule . friendlyId ,
@@ -150,6 +239,94 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
150
239
completedAt : a . completedAt ?? undefined ,
151
240
error : ApiRetrieveRunPresenter . apiErrorFromError ( a . error ) ,
152
241
} ) ) ,
242
+ relatedRuns : {
243
+ root : taskRun . rootTaskRun
244
+ ? {
245
+ id : taskRun . rootTaskRun . friendlyId ,
246
+ taskIdentifier : taskRun . rootTaskRun . taskIdentifier ,
247
+ idempotencyKey : taskRun . rootTaskRun . idempotencyKey ?? undefined ,
248
+ version : taskRun . rootTaskRun . lockedToVersion ?. version ,
249
+ status : ApiRetrieveRunPresenter . apiStatusFromRunStatus ( taskRun . rootTaskRun . status ) ,
250
+ createdAt : taskRun . rootTaskRun . createdAt ,
251
+ startedAt : taskRun . rootTaskRun . startedAt ?? undefined ,
252
+ updatedAt : taskRun . rootTaskRun . updatedAt ,
253
+ finishedAt : taskRun . rootTaskRun . completedAt ?? undefined ,
254
+ expiredAt : taskRun . rootTaskRun . expiredAt ?? undefined ,
255
+ delayedUntil : taskRun . rootTaskRun . delayUntil ?? undefined ,
256
+ ttl : taskRun . rootTaskRun . ttl ?? undefined ,
257
+ costInCents : taskRun . rootTaskRun . costInCents ,
258
+ baseCostInCents : taskRun . rootTaskRun . baseCostInCents ,
259
+ durationMs : taskRun . rootTaskRun . usageDurationMs ,
260
+ isTest : taskRun . rootTaskRun . isTest ,
261
+ depth : taskRun . rootTaskRun . depth ,
262
+ tags : taskRun . rootTaskRun . tags
263
+ . map ( ( t ) => t . name )
264
+ . sort ( ( a , b ) => a . localeCompare ( b ) ) ,
265
+ ...ApiRetrieveRunPresenter . apiBooleanHelpersFromTaskRunStatus (
266
+ taskRun . rootTaskRun . status
267
+ ) ,
268
+ }
269
+ : undefined ,
270
+ parent : taskRun . parentTaskRun
271
+ ? {
272
+ id : taskRun . parentTaskRun . friendlyId ,
273
+ taskIdentifier : taskRun . parentTaskRun . taskIdentifier ,
274
+ idempotencyKey : taskRun . parentTaskRun . idempotencyKey ?? undefined ,
275
+ version : taskRun . parentTaskRun . lockedToVersion ?. version ,
276
+ status : ApiRetrieveRunPresenter . apiStatusFromRunStatus (
277
+ taskRun . parentTaskRun . status
278
+ ) ,
279
+ createdAt : taskRun . parentTaskRun . createdAt ,
280
+ startedAt : taskRun . parentTaskRun . startedAt ?? undefined ,
281
+ updatedAt : taskRun . parentTaskRun . updatedAt ,
282
+ finishedAt : taskRun . parentTaskRun . completedAt ?? undefined ,
283
+ expiredAt : taskRun . parentTaskRun . expiredAt ?? undefined ,
284
+ delayedUntil : taskRun . parentTaskRun . delayUntil ?? undefined ,
285
+ isRoot : taskRun . parentTaskRun . id === taskRun . rootTaskRun ?. id ,
286
+ ttl : taskRun . parentTaskRun . ttl ?? undefined ,
287
+ costInCents : taskRun . parentTaskRun . costInCents ,
288
+ baseCostInCents : taskRun . parentTaskRun . baseCostInCents ,
289
+ durationMs : taskRun . parentTaskRun . usageDurationMs ,
290
+ isTest : taskRun . parentTaskRun . isTest ,
291
+ depth : taskRun . parentTaskRun . depth ,
292
+ tags : taskRun . parentTaskRun . tags
293
+ . map ( ( t ) => t . name )
294
+ . sort ( ( a , b ) => a . localeCompare ( b ) ) ,
295
+ ...ApiRetrieveRunPresenter . apiBooleanHelpersFromTaskRunStatus (
296
+ taskRun . parentTaskRun . status
297
+ ) ,
298
+ }
299
+ : undefined ,
300
+ children : taskRun . childRuns . map ( ( r ) => ( {
301
+ id : r . friendlyId ,
302
+ taskIdentifier : r . taskIdentifier ,
303
+ idempotencyKey : r . idempotencyKey ?? undefined ,
304
+ version : r . lockedToVersion ?. version ,
305
+ triggerFunction : r . batch
306
+ ? r . resumeParentOnCompletion
307
+ ? "batchTriggerAndWait"
308
+ : "batchTrigger"
309
+ : r . resumeParentOnCompletion
310
+ ? "triggerAndWait"
311
+ : "trigger" ,
312
+ batchId : r . batch ?. friendlyId ,
313
+ status : ApiRetrieveRunPresenter . apiStatusFromRunStatus ( r . status ) ,
314
+ createdAt : r . createdAt ,
315
+ startedAt : r . startedAt ?? undefined ,
316
+ updatedAt : r . updatedAt ,
317
+ finishedAt : r . completedAt ?? undefined ,
318
+ expiredAt : r . expiredAt ?? undefined ,
319
+ delayedUntil : r . delayUntil ?? undefined ,
320
+ ttl : r . ttl ?? undefined ,
321
+ tags : r . tags . map ( ( t ) => t . name ) . sort ( ( a , b ) => a . localeCompare ( b ) ) ,
322
+ costInCents : r . costInCents ,
323
+ baseCostInCents : r . baseCostInCents ,
324
+ durationMs : r . usageDurationMs ,
325
+ depth : r . depth ,
326
+ isTest : r . isTest ,
327
+ ...ApiRetrieveRunPresenter . apiBooleanHelpersFromTaskRunStatus ( r . status ) ,
328
+ } ) ) ,
329
+ } ,
153
330
} ;
154
331
} ) ;
155
332
}
@@ -225,6 +402,12 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
225
402
}
226
403
}
227
404
405
+ static apiBooleanHelpersFromTaskRunStatus ( status : TaskRunStatus ) {
406
+ return ApiRetrieveRunPresenter . apiBooleanHelpersFromRunStatus (
407
+ ApiRetrieveRunPresenter . apiStatusFromRunStatus ( status )
408
+ ) ;
409
+ }
410
+
228
411
static apiBooleanHelpersFromRunStatus ( status : RunStatus ) {
229
412
const isQueued = status === "QUEUED" || status === "WAITING_FOR_DEPLOY" || status === "DELAYED" ;
230
413
const isExecuting = status === "EXECUTING" || status === "REATTEMPTING" || status === "FROZEN" ;
0 commit comments