1
- import { type RuntimeEnvironmentType } from "@trigger.dev/core/v3" ;
1
+ import { logger , type RuntimeEnvironmentType } from "@trigger.dev/core/v3" ;
2
2
import { type RunEngineVersion } from "@trigger.dev/database" ;
3
3
import { ServiceValidationError } from "~/v3/services/baseService.server" ;
4
4
import { BasePresenter } from "./basePresenter.server" ;
5
5
import { WaitpointPresenter } from "./WaitpointPresenter.server" ;
6
+ import { waitpointStatusToApiStatus } from "./WaitpointTokenListPresenter.server" ;
6
7
7
8
export class ApiWaitpointPresenter extends BasePresenter {
8
9
public async call (
@@ -17,30 +18,63 @@ export class ApiWaitpointPresenter extends BasePresenter {
17
18
waitpointId : string
18
19
) {
19
20
return this . trace ( "call" , async ( span ) => {
20
- const presenter = new WaitpointPresenter ( ) ;
21
- const result = await presenter . call ( {
22
- friendlyId : waitpointId ,
23
- environmentId : environment . id ,
24
- projectId : environment . project . id ,
21
+ const waitpoint = await this . _replica . waitpoint . findFirst ( {
22
+ where : {
23
+ id : waitpointId ,
24
+ environmentId : environment . id ,
25
+ } ,
26
+ select : {
27
+ friendlyId : true ,
28
+ type : true ,
29
+ status : true ,
30
+ idempotencyKey : true ,
31
+ userProvidedIdempotencyKey : true ,
32
+ idempotencyKeyExpiresAt : true ,
33
+ inactiveIdempotencyKey : true ,
34
+ output : true ,
35
+ outputType : true ,
36
+ outputIsError : true ,
37
+ completedAfter : true ,
38
+ completedAt : true ,
39
+ createdAt : true ,
40
+ connectedRuns : {
41
+ select : {
42
+ friendlyId : true ,
43
+ } ,
44
+ take : 5 ,
45
+ } ,
46
+ tags : true ,
47
+ } ,
25
48
} ) ;
26
49
27
- if ( ! result ) {
50
+ if ( ! waitpoint ) {
51
+ logger . error ( `WaitpointPresenter: Waitpoint not found` , {
52
+ id : waitpointId ,
53
+ } ) ;
28
54
throw new ServiceValidationError ( "Waitpoint not found" ) ;
29
55
}
30
56
57
+ let isTimeout = false ;
58
+ if ( waitpoint . outputIsError && waitpoint . output ) {
59
+ isTimeout = true ;
60
+ }
61
+
31
62
return {
32
- id : result . id ,
33
- status : result . status ,
34
- completedAt : result . completedAt ?? undefined ,
35
- timeoutAt : result . timeoutAt ?? undefined ,
36
- completedAfter : result . completedAfter ?? undefined ,
37
- idempotencyKey : result . userProvidedIdempotencyKey ? result . idempotencyKey : undefined ,
38
- idempotencyKeyExpiresAt : result . idempotencyKeyExpiresAt ?? undefined ,
39
- tags : result . tags ?? [ ] ,
40
- createdAt : result . createdAt ,
41
- output : result . output ,
42
- outputType : result . outputType ,
43
- outputIsError : result . outputIsError ,
63
+ id : waitpoint . friendlyId ,
64
+ type : waitpoint . type ,
65
+ status : waitpointStatusToApiStatus ( waitpoint . status , waitpoint . outputIsError ) ,
66
+ idempotencyKey : waitpoint . idempotencyKey ,
67
+ userProvidedIdempotencyKey : waitpoint . userProvidedIdempotencyKey ,
68
+ idempotencyKeyExpiresAt : waitpoint . idempotencyKeyExpiresAt ?? undefined ,
69
+ inactiveIdempotencyKey : waitpoint . inactiveIdempotencyKey ?? undefined ,
70
+ output : waitpoint . output ?? undefined ,
71
+ outputType : waitpoint . outputType ,
72
+ outputIsError : waitpoint . outputIsError ,
73
+ timeoutAt : waitpoint . completedAfter ?? undefined ,
74
+ completedAfter : waitpoint . completedAfter ?? undefined ,
75
+ completedAt : waitpoint . completedAt ?? undefined ,
76
+ createdAt : waitpoint . createdAt ,
77
+ tags : waitpoint . tags ,
44
78
} ;
45
79
} ) ;
46
80
}
0 commit comments