import "server-only";
import { cache } from "react";
import { notFound } from "next/navigation";
import { getPull, pullCommits, pullDiff } from "./pulls";
import { getRepo } from "./repo";
/** A pull request for its pages (layout and tabs share one load), or the 404 page. */
export const getPullForPage = cache(async (owner: string, repoParam: string, numberParam: string) => {
const repo = await getRepo(owner, repoParam);
const pr = await getPull(repo.id, Number(numberParam));
if (!pr) notFound();
return { repo, pr, href: `${repo.base}/pulls/${pr.number}` };
});
export const getPullCommits = cache(async (owner: string, repoParam: string, numberParam: string) => {
const { repo, pr } = await getPullForPage(owner, repoParam, numberParam);
return pullCommits(repo, pr);
});
export const getPullFiles = cache(async (owner: string, repoParam: string, numberParam: string) => {
const { repo, pr } = await getPullForPage(owner, repoParam, numberParam);
return pullDiff(repo, pr);
});