Files
triggerdotdev--trigger.dev/apps/webapp/app/services/backgroundTasks/disableBackgroundTask.server.ts
Eric Allam 1a3e747ad8 WIP
2023-09-06 22:24:01 +01:00

65 lines
1.7 KiB
TypeScript

import type { BackgroundTaskVersion } from "@trigger.dev/database";
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { ExtendedEndpoint, findEndpoint } from "~/models/endpoint.server";
import type { AuthenticatedEnvironment } from "../apiAuth.server";
export type DisableBackgroundTaskServiceOptions = {
slug: string;
version: string;
};
export class DisableBackgroundTaskService {
#prismaClient: PrismaClient;
constructor(prismaClient: PrismaClient = prisma) {
this.#prismaClient = prismaClient;
}
public async call(
endpointIdOrEndpoint: string | ExtendedEndpoint,
options: DisableBackgroundTaskServiceOptions
) {
const endpoint =
typeof endpointIdOrEndpoint === "string"
? await findEndpoint(endpointIdOrEndpoint)
: endpointIdOrEndpoint;
return this.#disableBackgroundTask(endpoint.environment, options);
}
async #disableBackgroundTask(
environment: AuthenticatedEnvironment,
options: DisableBackgroundTaskServiceOptions
): Promise<BackgroundTaskVersion | undefined> {
const backgroundTask = await this.#prismaClient.backgroundTask.findUnique({
where: {
projectId_slug: {
projectId: environment.projectId,
slug: options.slug,
},
},
});
if (!backgroundTask) {
return;
}
const backgroundTaskVersion = await this.#prismaClient.backgroundTaskVersion.findUnique({
where: {
backgroundTaskId_version_environmentId: {
backgroundTaskId: backgroundTask.id,
version: options.version,
environmentId: environment.id,
},
},
});
if (!backgroundTaskVersion) {
return;
}
// TODO: Disable background task
}
}