Skip to content

Commit bf5ec07

Browse files
committed
Separate ApiWaitpointPresenter completely
1 parent ada673b commit bf5ec07

File tree

2 files changed

+55
-20
lines changed

2 files changed

+55
-20
lines changed

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

Lines changed: 53 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { type RuntimeEnvironmentType } from "@trigger.dev/core/v3";
1+
import { logger, type RuntimeEnvironmentType } from "@trigger.dev/core/v3";
22
import { type RunEngineVersion } from "@trigger.dev/database";
33
import { ServiceValidationError } from "~/v3/services/baseService.server";
44
import { BasePresenter } from "./basePresenter.server";
55
import { WaitpointPresenter } from "./WaitpointPresenter.server";
6+
import { waitpointStatusToApiStatus } from "./WaitpointTokenListPresenter.server";
67

78
export class ApiWaitpointPresenter extends BasePresenter {
89
public async call(
@@ -17,30 +18,63 @@ export class ApiWaitpointPresenter extends BasePresenter {
1718
waitpointId: string
1819
) {
1920
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+
},
2548
});
2649

27-
if (!result) {
50+
if (!waitpoint) {
51+
logger.error(`WaitpointPresenter: Waitpoint not found`, {
52+
id: waitpointId,
53+
});
2854
throw new ServiceValidationError("Waitpoint not found");
2955
}
3056

57+
let isTimeout = false;
58+
if (waitpoint.outputIsError && waitpoint.output) {
59+
isTimeout = true;
60+
}
61+
3162
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,
4478
};
4579
});
4680
}

apps/webapp/app/routes/api.v1.waitpoints.tokens.$waitpointFriendlyId.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { json } from "@remix-run/server-runtime";
22
import { type WaitpointRetrieveTokenResponse } from "@trigger.dev/core/v3";
3+
import { WaitpointId } from "@trigger.dev/core/v3/isomorphic";
34
import { z } from "zod";
45
import { ApiWaitpointPresenter } from "~/presenters/v3/ApiWaitpointPresenter.server";
56
import { createLoaderApiRoute } from "~/services/routeBuilders/apiBuilder.server";
@@ -15,7 +16,7 @@ export const loader = createLoaderApiRoute(
1516
const presenter = new ApiWaitpointPresenter();
1617
const result: WaitpointRetrieveTokenResponse = await presenter.call(
1718
authentication.environment,
18-
params.waitpointFriendlyId
19+
WaitpointId.toId(params.waitpointFriendlyId)
1920
);
2021
return json(result);
2122
}

0 commit comments

Comments
 (0)