import type { ServiceMethodFactory } from "@ethicdevs/react-monolith";
import type {
Artefact,
Pipeline,
Repository,
Stage,
User,
} from "@prisma/client";
import type { PipelineServiceDeps } from "./types";
const makeGetPipeline: ServiceMethodFactory<
PipelineServiceDeps,
[string],
Promise<
| (Pipeline & {
stages: Stage[];
triggeredByUser: Omit<User, "hashedPassword" | "email"> | null;
artefacts: Artefact[];
repo: Repository;
})
| null
>
> = ({ request }) => {
return async (pipelineId: string) => {
return request.prisma.pipeline.findUnique({
where: {
id: pipelineId,
},
include: {
stages: true,
triggeredByUser: {
select: {
id: true,
username: true,
createdAt: true,
updatedAt: true,
avatarUri: true,
displayName: true,
role: true,
},
},
artefacts: true,
repo: true,
},
});
};
};
export default makeGetPipeline;