forked from triggerdotdev/trigger.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestPresenter.server.ts
More file actions
67 lines (62 loc) · 2.25 KB
/
Copy pathTestPresenter.server.ts
File metadata and controls
67 lines (62 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { type RuntimeEnvironmentType, type TaskTriggerSource } from "@trigger.dev/database";
import { sqlDatabaseSchema } from "~/db.server";
import { findCurrentWorkerDeployment } from "~/v3/models/workerDeployment.server";
import { BasePresenter } from "./basePresenter.server";
type TaskListOptions = {
userId: string;
projectId: string;
environmentId: string;
environmentType: RuntimeEnvironmentType;
};
export type TaskList = Awaited<ReturnType<TestPresenter["call"]>>;
export type TaskListItem = NonNullable<TaskList["tasks"]>[0];
export class TestPresenter extends BasePresenter {
public async call({ userId, projectId, environmentId, environmentType }: TaskListOptions) {
const isDev = environmentType === "DEVELOPMENT";
const tasks = await this.#getTasks(environmentId, isDev);
return {
tasks: tasks.map((task) => {
return {
id: task.id,
taskIdentifier: task.slug,
filePath: task.filePath,
friendlyId: task.friendlyId,
triggerSource: task.triggerSource,
};
}),
};
}
async #getTasks(envId: string, isDev: boolean) {
if (isDev) {
return await this._replica.$queryRaw<
{
id: string;
version: string;
slug: string;
filePath: string;
friendlyId: string;
triggerSource: TaskTriggerSource;
}[]
>`WITH workers AS (
SELECT
bw.*,
ROW_NUMBER() OVER(
ORDER BY
string_to_array(split_part(bw.version, '-', 1), '.')::int[] DESC,
split_part(bw.version, '-', 2) DESC
) AS rn
FROM
${sqlDatabaseSchema}."BackgroundWorker" bw
WHERE "runtimeEnvironmentId" = ${envId}
),
latest_workers AS (SELECT * FROM workers WHERE rn = 1)
SELECT bwt.id, version, slug, "filePath", bwt."friendlyId", bwt."triggerSource"
FROM latest_workers
JOIN ${sqlDatabaseSchema}."BackgroundWorkerTask" bwt ON bwt."workerId" = latest_workers.id
ORDER BY slug ASC;`;
} else {
const currentDeployment = await findCurrentWorkerDeployment({ environmentId: envId });
return currentDeployment?.worker?.tasks ?? [];
}
}
}