import { createServerFn } from "@tanstack/react-start"; import { requireViewer, viewerMiddleware } from "./middleware"; import { limitHeavy } from "~/server/limits"; import { assertVerifiedForWrites } from "~/server/verified-writes"; import { assertNotArchived, requireRepoAccess } from "~/server/repos"; import { resyncImportedRefs } from "~/server/git/ref-sync"; import { badRequest } from "~/server/errors"; import { repoRef } from "~/lib/validation"; export const syncImportedRefs = createServerFn({ method: "POST" }) .middleware([viewerMiddleware]) .validator(repoRef) .handler(async ({ data, context }) => { assertVerifiedForWrites(requireViewer(context.viewer)); const { repo } = await requireRepoAccess(data.owner, data.repo, context.viewer, "admin"); assertNotArchived(repo); if (!repo.import_source_url) throw badRequest("This repository was not imported"); if (repo.status !== "ready") throw badRequest("The repository is still being provisioned"); await limitHeavy(context.viewer); return resyncImportedRefs(repo, repo.import_source_url); });