Skip to content

Commit 2ece703

Browse files
committed
Refactored to make it testable
1 parent 074d6e1 commit 2ece703

File tree

2 files changed

+307
-223
lines changed

2 files changed

+307
-223
lines changed

apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.ai-filter.tsx

Lines changed: 91 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,21 @@ import { requireUserId } from "~/services/session.server";
44
import { EnvironmentParamSchema } from "~/utils/pathBuilder";
55
import { findProjectBySlug } from "~/models/project.server";
66
import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server";
7-
import { processAIFilter } from "~/v3/services/aiRunFilterService.server";
87
import { type TaskRunListSearchFilters } from "~/components/runs/v3/RunFilters";
98
import { tryCatch } from "@trigger.dev/core";
9+
import {
10+
AIRunFilterService,
11+
QueryQueues,
12+
QueryTags,
13+
QueryTasks,
14+
QueryVersions,
15+
} from "~/v3/services/aiRunFilterService.server";
16+
import { RunTagListPresenter } from "~/presenters/v3/RunTagListPresenter.server";
17+
import { QueueListPresenter } from "~/presenters/v3/QueueListPresenter.server";
18+
import { VersionListPresenter } from "~/presenters/v3/VersionListPresenter.server";
19+
import { TaskListPresenter } from "~/presenters/v3/TaskListPresenter.server";
20+
import { getAllTaskIdentifiers } from "~/models/task.server";
21+
import { $replica } from "~/db.server";
1022

1123
const RequestSchema = z.object({
1224
text: z.string().min(1),
@@ -48,7 +60,84 @@ export async function action({ request, params }: ActionFunctionArgs) {
4860

4961
const { text } = submission.data;
5062

51-
const [error, result] = await tryCatch(processAIFilter(text, environment));
63+
//Tags querying
64+
const queryTags: QueryTags = {
65+
query: async (search) => {
66+
const tagPresenter = new RunTagListPresenter();
67+
const tags = await tagPresenter.call({
68+
projectId: environment.projectId,
69+
name: search,
70+
page: 1,
71+
pageSize: 50,
72+
});
73+
return {
74+
tags: tags.tags.map((t) => t.name),
75+
};
76+
},
77+
};
78+
79+
const queryQueues: QueryQueues = {
80+
query: async (query, type) => {
81+
const queuePresenter = new QueueListPresenter();
82+
const queues = await queuePresenter.call({
83+
environment,
84+
query,
85+
page: 1,
86+
type,
87+
});
88+
return {
89+
queues: queues.success ? queues.queues.map((q) => q.name) : [],
90+
};
91+
},
92+
};
93+
94+
const queryVersions: QueryVersions = {
95+
query: async (versionPrefix, isCurrent) => {
96+
const versionPresenter = new VersionListPresenter();
97+
const versions = await versionPresenter.call({
98+
environment,
99+
query: versionPrefix ? versionPrefix : undefined,
100+
});
101+
102+
if (isCurrent) {
103+
const currentVersion = versions.versions.find((v) => v.isCurrent);
104+
if (currentVersion) {
105+
return {
106+
version: currentVersion.version,
107+
};
108+
}
109+
110+
const newestVersion = versions.versions.at(0)?.version;
111+
if (newestVersion) {
112+
return {
113+
version: newestVersion,
114+
};
115+
}
116+
}
117+
118+
return {
119+
versions: versions.versions.map((v) => v.version),
120+
};
121+
},
122+
};
123+
124+
const queryTasks: QueryTasks = {
125+
query: async () => {
126+
const tasks = await getAllTaskIdentifiers($replica, environment.id);
127+
return {
128+
tasks,
129+
};
130+
},
131+
};
132+
133+
const service = new AIRunFilterService({
134+
queryTags,
135+
queryVersions,
136+
queryQueues,
137+
queryTasks,
138+
});
139+
140+
const [error, result] = await tryCatch(service.call(text, environment));
52141
if (error) {
53142
return json({ success: false, error: error.message }, { status: 400 });
54143
}

0 commit comments

Comments
 (0)