21 lines · 721 B
import { stmt } from "./db";

/** Statements that point the old repo location at the repo and free the new location from stale redirects. */
export function repoMoveStatements(
  repoId: string,
  from: { owner: string; name: string },
  to: { owner: string; name: string },
): D1PreparedStatement[] {
  return [
    stmt("DELETE FROM repo_redirects WHERE owner_name = ? AND repo_name = ?", to.owner, to.name),
    stmt(
      `INSERT INTO repo_redirects (owner_name, repo_name, repo_id, created_at) VALUES (?, ?, ?, ?)
       ON CONFLICT (owner_name, repo_name) DO UPDATE SET repo_id = excluded.repo_id, created_at = excluded.created_at`,
      from.owner,
      from.name,
      repoId,
      Date.now(),
    ),
  ];
}