import type { ServiceMethodFactory } from "@ethicdevs/react-monolith";
import { Pipeline, PipelineStatus } from "@prisma/client";
import type { PipelineServiceDeps, PipelinesFilter } from "./types";
const makeListByRepo: ServiceMethodFactory<
PipelineServiceDeps,
[string, string],
Promise<Pipeline[]>
> = ({ request }) => {
return async (
orgSlug: string,
repoSlug: string,
filter?: PipelinesFilter,
) => {
return request.prisma.pipeline.findMany({
where: {
repo: {
organization: {
slug: orgSlug,
},
slug: repoSlug,
},
status:
filter != null && filter !== "all"
? {
passed: PipelineStatus.PASSED,
pending: PipelineStatus.PENDING,
running: PipelineStatus.RUNNING,
failed: PipelineStatus.FAILED,
canceled: PipelineStatus.CANCELED,
}[filter || "passed"]
: undefined,
},
orderBy: { createdAt: "desc" },
});
};
};
export default makeListByRepo;