diff --git a/app/api/webhooks/github/route.ts b/app/api/webhooks/github/route.ts index 2445f50..85b5530 100644 --- a/app/api/webhooks/github/route.ts +++ b/app/api/webhooks/github/route.ts @@ -1,8 +1,5 @@ import { NextRequest, NextResponse } from "next/server"; -import { - generatePullRequestSummary, - reviewPullRequest, -} from "@/lib/ai/actions"; +import { reviewPullRequest } from "@/lib/ai/actions"; import { inngest } from "@/lib/inngest"; import { Webhooks } from "@octokit/webhooks"; @@ -110,12 +107,10 @@ export async function POST(request: NextRequest) { // Trigger AI review when PR is opened or updated if (action === "opened" || action === "synchronized") { try { - await generatePullRequestSummary( + await reviewPullRequest( owner, repoName, prNumber, - pull_request?.title, - pull_request?.body, body?.installation?.id, pull_request?.base?.sha, pull_request?.head?.sha, @@ -123,16 +118,6 @@ export async function POST(request: NextRequest) { pull_request?.additions, pull_request?.deletions ); - console.log(`Summary completed for: ${repo} #${prNumber}`); - } catch (error) { - console.error( - `Summarization failed for repo: ${repo} #${prNumber}: `, - error - ); - } - - try { - await reviewPullRequest(owner, repoName, prNumber); console.log(`Review completed for: ${repo} #${prNumber}`); } catch (error) { console.error( diff --git a/lib/ai/actions/index.ts b/lib/ai/actions/index.ts index d471b63..a52bf2c 100644 --- a/lib/ai/actions/index.ts +++ b/lib/ai/actions/index.ts @@ -7,7 +7,13 @@ import { prisma } from "@/lib/prisma"; export async function reviewPullRequest( owner: string, repo: string, - prNumber: number + prNumber: number, + installationId: number, + baseSha: string, + headSha: string, + changedFiles: number, + additions: number, + deletions: number ) { try { const repository = await prisma.repo.findFirst({ @@ -90,6 +96,25 @@ export async function reviewPullRequest( }, }); + await inngest.send({ + name: "pr.summary.requested", + id: `review-${repository.id}-${prNumber}`, + data: { + owner, + repo, + prNumber, + title: title ?? "", + description: description ?? "", + accountId: githubAccount.accountId, + installationId: installationId ?? null, + baseSha, + headSha, + changedFiles: changedFiles ?? 0, + additions: additions ?? 0, + deletions: deletions ?? 0, + }, + }); + await inngest.send({ name: "pr.review.requested", id: `review-${repository.id}-${prNumber}`, @@ -136,69 +161,3 @@ export async function reviewPullRequest( } } } - -export async function generatePullRequestSummary( - owner: string, - repoName: string, - prNumber: number, - title: string, - description: string, - installationId: number, - baseSha: string, - headSha: string, - changedFiles: number, - additions: number, - deletions: number -) { - try { - const repository = await prisma.repo.findFirst({ - where: { - name: repoName, - fullName: `${owner}/${repoName}`, - }, - include: { - owner: { - include: { - accounts: { - where: { - providerId: "github", - }, - }, - }, - }, - }, - }); - - if (!repository) - throw new Error( - `Repository ${owner}/${repoName} not found in databse. Please reconnect the repository.` - ); - - const githubAccount = repository.owner.accounts[0]; - await inngest.send({ - name: "pr.summary.requested", - id: `review-${repository.id}-${prNumber}`, - data: { - owner, - repo: repoName, - prNumber, - title: title ?? "", - description: description ?? "", - accountId: githubAccount.accountId, - installationId: installationId ?? null, - baseSha, - headSha, - changedFiles: changedFiles ?? 0, - additions: additions ?? 0, - deletions: deletions ?? 0, - }, - }); - - return { - sucess: true, - message: "PR Summary Queued", - }; - } catch (error) { - console.error("Failed to post PR Summary ", error); - } -}