Skip to content

Commit 425c614

Browse files
committed
Flatten the load function test task result object
1 parent fb7a3ee commit 425c614

File tree

2 files changed

+95
-89
lines changed

2 files changed

+95
-89
lines changed

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

Lines changed: 78 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -23,44 +23,48 @@ type Task = {
2323
friendlyId: string;
2424
};
2525

26-
export type TestTask =
26+
type Queue = {
27+
id: string;
28+
name: string;
29+
type: "custom" | "task";
30+
paused: boolean;
31+
};
32+
33+
export type TestTaskResult =
2734
| {
35+
foundTask: true;
2836
triggerSource: "STANDARD";
29-
queue?: {
30-
id: string;
31-
name: string;
32-
type: "custom" | "task";
33-
paused: boolean;
34-
};
37+
queue?: Queue;
3538
task: Task;
3639
runs: StandardRun[];
3740
latestVersions: string[];
41+
disableVersionSelection: boolean;
42+
allowArbitraryQueues: boolean;
3843
}
3944
| {
45+
foundTask: true;
4046
triggerSource: "SCHEDULED";
41-
queue?: {
42-
id: string;
43-
name: string;
44-
type: "custom" | "task";
45-
paused: boolean;
46-
};
47+
queue?: Queue;
4748
task: Task;
4849
possibleTimezones: string[];
4950
runs: ScheduledRun[];
5051
latestVersions: string[];
51-
};
52-
53-
export type TestTaskResult =
54-
| {
55-
foundTask: true;
56-
task: TestTask;
5752
disableVersionSelection: boolean;
5853
allowArbitraryQueues: boolean;
5954
}
6055
| {
6156
foundTask: false;
6257
};
6358

59+
export type StandardTaskResult = Extract<
60+
TestTaskResult,
61+
{ foundTask: true; triggerSource: "STANDARD" }
62+
>;
63+
export type ScheduledTaskResult = Extract<
64+
TestTaskResult,
65+
{ foundTask: true; triggerSource: "SCHEDULED" }
66+
>;
67+
6468
type RawRun = {
6569
id: string;
6670
queue: string;
@@ -217,71 +221,71 @@ export class TestTaskPresenter {
217221
case "STANDARD":
218222
return {
219223
foundTask: true,
220-
task: {
221-
triggerSource: "STANDARD",
222-
queue: taskQueue
223-
? {
224-
id: taskQueue.friendlyId,
225-
name: taskQueue.name.replace(/^task\//, ""),
226-
type: queueTypeFromType(taskQueue.type),
227-
paused: taskQueue.paused,
228-
}
229-
: undefined,
230-
task: taskWithEnvironment,
231-
runs: await Promise.all(
232-
latestRuns.map(
233-
async (r) =>
234-
({
235-
...r,
236-
payload: await prettyPrintPacket(r.payload, r.payloadType),
237-
metadata: r.seedMetadata
238-
? await prettyPrintPacket(r.seedMetadata, r.seedMetadataType)
239-
: undefined,
240-
ttlSeconds: r.ttl ? parse(r.ttl, "s") ?? undefined : undefined,
241-
} satisfies StandardRun)
242-
)
243-
),
244-
latestVersions,
245-
},
224+
triggerSource: "STANDARD",
225+
queue: taskQueue
226+
? {
227+
id: taskQueue.friendlyId,
228+
name: taskQueue.name.replace(/^task\//, ""),
229+
type: queueTypeFromType(taskQueue.type),
230+
paused: taskQueue.paused,
231+
}
232+
: undefined,
233+
task: taskWithEnvironment,
234+
runs: await Promise.all(
235+
latestRuns.map(
236+
async (r) =>
237+
({
238+
...r,
239+
payload: await prettyPrintPacket(r.payload, r.payloadType),
240+
metadata: r.seedMetadata
241+
? await prettyPrintPacket(r.seedMetadata, r.seedMetadataType)
242+
: undefined,
243+
ttlSeconds: r.ttl ? parse(r.ttl, "s") ?? undefined : undefined,
244+
} satisfies StandardRun)
245+
)
246+
),
247+
latestVersions,
246248
disableVersionSelection,
247249
allowArbitraryQueues,
248250
};
249-
case "SCHEDULED":
251+
case "SCHEDULED": {
250252
const possibleTimezones = getTimezones();
251253
return {
252254
foundTask: true,
253-
task: {
254-
triggerSource: "SCHEDULED",
255-
queue: taskQueue
256-
? {
257-
id: taskQueue.friendlyId,
258-
name: taskQueue.name.replace(/^task\//, ""),
259-
type: queueTypeFromType(taskQueue.type),
260-
paused: taskQueue.paused,
261-
}
262-
: undefined,
263-
task: taskWithEnvironment,
264-
possibleTimezones,
265-
runs: (
266-
await Promise.all(
267-
latestRuns.map(async (r) => {
268-
const payload = await getScheduleTaskRunPayload(r);
255+
triggerSource: "SCHEDULED",
256+
queue: taskQueue
257+
? {
258+
id: taskQueue.friendlyId,
259+
name: taskQueue.name.replace(/^task\//, ""),
260+
type: queueTypeFromType(taskQueue.type),
261+
paused: taskQueue.paused,
262+
}
263+
: undefined,
264+
task: taskWithEnvironment,
265+
possibleTimezones,
266+
runs: (
267+
await Promise.all(
268+
latestRuns.map(async (r) => {
269+
const payload = await getScheduleTaskRunPayload(r);
269270

270-
if (payload.success) {
271-
return {
272-
...r,
273-
payload: payload.data,
274-
ttlSeconds: r.ttl ? parse(r.ttl, "s") ?? undefined : undefined,
275-
} satisfies ScheduledRun;
276-
}
277-
})
278-
)
279-
).filter(Boolean),
280-
latestVersions,
281-
},
271+
if (payload.success) {
272+
return {
273+
...r,
274+
payload: payload.data,
275+
ttlSeconds: r.ttl ? parse(r.ttl, "s") ?? undefined : undefined,
276+
} satisfies ScheduledRun;
277+
}
278+
})
279+
)
280+
).filter(Boolean),
281+
latestVersions,
282282
disableVersionSelection,
283283
allowArbitraryQueues,
284284
};
285+
}
286+
default: {
287+
return task.triggerSource satisfies never;
288+
}
285289
}
286290
}
287291
}

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

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server";
4242
import {
4343
type ScheduledRun,
4444
type StandardRun,
45-
type TestTask,
45+
type StandardTaskResult,
46+
type ScheduledTaskResult,
4647
TestTaskPresenter,
4748
} from "~/presenters/v3/TestTaskPresenter.server";
4849
import { logger } from "~/services/logger.server";
@@ -186,7 +187,7 @@ export default function Page() {
186187
}
187188
}, [params.organizationSlug, params.projectParam, params.envParam]);
188189

189-
const defaultTaskQueue = result.task.queue;
190+
const defaultTaskQueue = result.queue;
190191
const queues = useMemo(() => {
191192
const customQueues = queueFetcher.data?.queues ?? [];
192193

@@ -195,14 +196,15 @@ export default function Page() {
195196
: customQueues;
196197
}, [queueFetcher.data?.queues, defaultTaskQueue]);
197198

198-
switch (result.task.triggerSource) {
199+
const { triggerSource } = result;
200+
switch (triggerSource) {
199201
case "STANDARD": {
200202
return (
201203
<StandardTaskForm
202-
task={result.task.task}
204+
task={result.task}
203205
queues={queues}
204-
runs={result.task.runs}
205-
versions={result.task.latestVersions}
206+
runs={result.runs}
207+
versions={result.latestVersions}
206208
disableVersionSelection={result.disableVersionSelection}
207209
allowArbitraryQueues={result.allowArbitraryQueues}
208210
/>
@@ -211,18 +213,18 @@ export default function Page() {
211213
case "SCHEDULED": {
212214
return (
213215
<ScheduledTaskForm
214-
task={result.task.task}
216+
task={result.task}
215217
queues={queues}
216-
runs={result.task.runs}
217-
versions={result.task.latestVersions}
218-
possibleTimezones={result.task.possibleTimezones}
218+
runs={result.runs}
219+
versions={result.latestVersions}
220+
possibleTimezones={result.possibleTimezones}
219221
disableVersionSelection={result.disableVersionSelection}
220222
allowArbitraryQueues={result.allowArbitraryQueues}
221223
/>
222224
);
223225
}
224226
default: {
225-
return result.task satisfies never;
227+
return triggerSource satisfies never;
226228
}
227229
}
228230
}
@@ -246,8 +248,8 @@ function StandardTaskForm({
246248
disableVersionSelection,
247249
allowArbitraryQueues,
248250
}: {
249-
task: TestTask["task"];
250-
queues: Required<TestTask>["queue"][];
251+
task: StandardTaskResult["task"];
252+
queues: Required<StandardTaskResult>["queue"][];
251253
runs: StandardRun[];
252254
versions: string[];
253255
disableVersionSelection: boolean;
@@ -660,10 +662,10 @@ function ScheduledTaskForm({
660662
disableVersionSelection,
661663
allowArbitraryQueues,
662664
}: {
663-
task: TestTask["task"];
665+
task: ScheduledTaskResult["task"];
664666
runs: ScheduledRun[];
665667
possibleTimezones: string[];
666-
queues: Required<TestTask>["queue"][];
668+
queues: Required<ScheduledTaskResult>["queue"][];
667669
versions: string[];
668670
disableVersionSelection: boolean;
669671
allowArbitraryQueues: boolean;

0 commit comments

Comments
 (0)