GitFOSS
.ts
TypeScript
(application/typescript)
// 1st-party
import type { ServiceMethodFactory } from "@ethicdevs/react-monolith";
// generated via script[generate:prisma]
import type { Repository } from "@prisma/client";
// service
import type { RepositoryServiceDeps } from "./types";

const makeGetRepository: ServiceMethodFactory<
  RepositoryServiceDeps,
  [string, string],
  Promise<Repository | null>
> = ({ request }) => {
  return async (orgSlug, repoSlug) => {
    const parentOrg = await request.prisma.organization.findUnique({
      where: {
        slug: orgSlug,
      },
    });

    if (parentOrg == null) {
      return null;
    }

    const repository = await request.prisma.repository.findFirst({
      where: {
        slug: repoSlug,
        organization: {
          slug: orgSlug,
        },
      },
    });

    return repository;
  };
};

export default makeGetRepository;