chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import { QueueManifest } from "@trigger.dev/core/v3/schemas";
|
||||
import type { TaskQueue } from "@trigger.dev/database";
|
||||
import { prisma } from "~/db.server";
|
||||
|
||||
export async function findQueueInEnvironment(
|
||||
queueName: string,
|
||||
environmentId: string,
|
||||
backgroundWorkerTaskId?: string,
|
||||
backgroundTask?: { queueConfig?: unknown }
|
||||
): Promise<TaskQueue | undefined> {
|
||||
const sanitizedQueueName = sanitizeQueueName(queueName);
|
||||
|
||||
const queue = await prisma.taskQueue.findFirst({
|
||||
where: {
|
||||
runtimeEnvironmentId: environmentId,
|
||||
name: sanitizedQueueName,
|
||||
},
|
||||
});
|
||||
|
||||
if (queue) {
|
||||
return queue;
|
||||
}
|
||||
|
||||
const task = backgroundTask
|
||||
? backgroundTask
|
||||
: backgroundWorkerTaskId
|
||||
? await prisma.backgroundWorkerTask.findFirst({
|
||||
where: {
|
||||
id: backgroundWorkerTaskId,
|
||||
},
|
||||
})
|
||||
: undefined;
|
||||
|
||||
if (!task) {
|
||||
return;
|
||||
}
|
||||
|
||||
const queueConfig = QueueManifest.safeParse(task.queueConfig);
|
||||
|
||||
if (queueConfig.success) {
|
||||
const taskQueueName = queueConfig.data.name
|
||||
? sanitizeQueueName(queueConfig.data.name)
|
||||
: undefined;
|
||||
|
||||
if (taskQueueName && taskQueueName !== sanitizedQueueName) {
|
||||
const queue = await prisma.taskQueue.findFirst({
|
||||
where: {
|
||||
runtimeEnvironmentId: environmentId,
|
||||
name: taskQueueName,
|
||||
},
|
||||
});
|
||||
|
||||
if (queue) {
|
||||
return queue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Only allow alphanumeric characters, underscores, hyphens, and slashes (and only the first 128 characters)
|
||||
export function sanitizeQueueName(queueName: string) {
|
||||
return queueName.replace(/[^a-zA-Z0-9_\-/]/g, "").substring(0, 128);
|
||||
}
|
||||
Reference in New Issue
Block a user