63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import { CreateBackgroundFunctionWorkerImageRequestBody } from "@trigger.dev/core";
|
|
import { PrismaClient } from "@trigger.dev/database";
|
|
import { prisma } from "~/db.server";
|
|
import { AuthenticatedEnvironment } from "../apiAuth.server";
|
|
|
|
export class CreateBackgroundFunctionImageService {
|
|
#prismaClient: PrismaClient;
|
|
|
|
constructor(prismaClient: PrismaClient = prisma) {
|
|
this.#prismaClient = prismaClient;
|
|
}
|
|
|
|
public async call(
|
|
environment: AuthenticatedEnvironment,
|
|
id: string,
|
|
payload: CreateBackgroundFunctionWorkerImageRequestBody
|
|
) {
|
|
// Find the artifact
|
|
const artifact = await this.#prismaClient.backgroundFunctionArtifact.findUnique({
|
|
where: {
|
|
id,
|
|
},
|
|
include: {
|
|
backgroundFunction: true,
|
|
},
|
|
});
|
|
|
|
if (!artifact) {
|
|
return;
|
|
}
|
|
|
|
if (artifact.backgroundFunction.projectId !== environment.projectId) {
|
|
return;
|
|
}
|
|
|
|
const image = await this.#prismaClient.backgroundFunctionImage.upsert({
|
|
where: {
|
|
backgroundFunctionArtifactId_digest: {
|
|
backgroundFunctionArtifactId: artifact.id,
|
|
digest: payload.digest,
|
|
},
|
|
},
|
|
create: {
|
|
backgroundFunctionArtifactId: artifact.id,
|
|
backgroundFunctionId: artifact.backgroundFunctionId,
|
|
digest: payload.digest,
|
|
name: payload.name,
|
|
tag: payload.tag,
|
|
size: payload.size,
|
|
registry: payload.registry,
|
|
},
|
|
update: {
|
|
name: payload.name,
|
|
tag: payload.tag,
|
|
size: payload.size,
|
|
registry: payload.registry,
|
|
},
|
|
});
|
|
|
|
return image;
|
|
}
|
|
}
|