Spaces:
Sleeping
Sleeping
Commit ·
bd419f7
1
Parent(s): b6b16e1
changes
Browse files
src/app/api/contributor/dashboard-summary/route.ts
CHANGED
|
@@ -10,6 +10,7 @@ import { getCurrentUser } from "@/lib/auth";
|
|
| 10 |
import { db } from "@/db";
|
| 11 |
import { issues } from "@/db/schema";
|
| 12 |
import { eq } from "drizzle-orm";
|
|
|
|
| 13 |
|
| 14 |
// Define columns to select (excludes bodySummary which doesn't exist in DB yet)
|
| 15 |
const issueColumns = {
|
|
@@ -60,9 +61,12 @@ export async function GET(request: NextRequest) {
|
|
| 60 |
const openIssues = issueItems.filter(i => i.state === 'open').length;
|
| 61 |
const closedIssues = issueItems.filter(i => i.state === 'closed').length;
|
| 62 |
|
| 63 |
-
// Get unique repositories
|
| 64 |
-
const
|
| 65 |
-
|
|
|
|
|
|
|
|
|
|
| 66 |
console.log("[Dashboard Summary] Calculated: %d PRs, %d Issues, %d repos", prs.length, issueItems.length, uniqueRepos.size);
|
| 67 |
|
| 68 |
return NextResponse.json({
|
|
@@ -93,3 +97,4 @@ export async function GET(request: NextRequest) {
|
|
| 93 |
}, { status: 500 });
|
| 94 |
}
|
| 95 |
}
|
|
|
|
|
|
| 10 |
import { db } from "@/db";
|
| 11 |
import { issues } from "@/db/schema";
|
| 12 |
import { eq } from "drizzle-orm";
|
| 13 |
+
import { getUserRepositories } from "@/lib/db/queries/users";
|
| 14 |
|
| 15 |
// Define columns to select (excludes bodySummary which doesn't exist in DB yet)
|
| 16 |
const issueColumns = {
|
|
|
|
| 61 |
const openIssues = issueItems.filter(i => i.state === 'open').length;
|
| 62 |
const closedIssues = issueItems.filter(i => i.state === 'closed').length;
|
| 63 |
|
| 64 |
+
// Get unique repositories from issues + tracked repos
|
| 65 |
+
const reposFromIssues = allItems.map(item => item.repoName).filter(Boolean);
|
| 66 |
+
const trackedRepos = await getUserRepositories(user.id);
|
| 67 |
+
const reposFromTracking = trackedRepos.map(r => r.repoFullName);
|
| 68 |
+
const uniqueRepos = new Set([...reposFromIssues, ...reposFromTracking]);
|
| 69 |
+
|
| 70 |
console.log("[Dashboard Summary] Calculated: %d PRs, %d Issues, %d repos", prs.length, issueItems.length, uniqueRepos.size);
|
| 71 |
|
| 72 |
return NextResponse.json({
|
|
|
|
| 97 |
}, { status: 500 });
|
| 98 |
}
|
| 99 |
}
|
| 100 |
+
|
src/app/api/contributor/tracked-repos/route.ts
CHANGED
|
@@ -6,9 +6,7 @@
|
|
| 6 |
|
| 7 |
import { NextRequest, NextResponse } from "next/server";
|
| 8 |
import { getCurrentUser } from "@/lib/auth";
|
| 9 |
-
import {
|
| 10 |
-
import { repositories } from "@/db/schema";
|
| 11 |
-
import { eq, and } from "drizzle-orm";
|
| 12 |
|
| 13 |
export async function GET(request: NextRequest) {
|
| 14 |
try {
|
|
@@ -17,30 +15,17 @@ export async function GET(request: NextRequest) {
|
|
| 17 |
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
| 18 |
}
|
| 19 |
|
| 20 |
-
// Fetch
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
id: repositories.id,
|
| 24 |
-
name: repositories.name,
|
| 25 |
-
owner: repositories.owner,
|
| 26 |
-
createdAt: repositories.createdAt,
|
| 27 |
-
})
|
| 28 |
-
.from(repositories)
|
| 29 |
-
.where(
|
| 30 |
-
and(
|
| 31 |
-
eq(repositories.userId, user.id),
|
| 32 |
-
eq(repositories.addedByUser, true)
|
| 33 |
-
)
|
| 34 |
-
)
|
| 35 |
-
.orderBy(repositories.createdAt);
|
| 36 |
|
| 37 |
// Return just the repository names for easy consumption
|
| 38 |
-
const repoNames = trackedRepos.map(repo => repo.
|
| 39 |
|
| 40 |
return NextResponse.json({
|
| 41 |
repositories: repoNames,
|
| 42 |
count: repoNames.length,
|
| 43 |
-
details: trackedRepos,
|
| 44 |
});
|
| 45 |
|
| 46 |
} catch (error) {
|
|
|
|
| 6 |
|
| 7 |
import { NextRequest, NextResponse } from "next/server";
|
| 8 |
import { getCurrentUser } from "@/lib/auth";
|
| 9 |
+
import { getUserRepositories } from "@/lib/db/queries/users";
|
|
|
|
|
|
|
| 10 |
|
| 11 |
export async function GET(request: NextRequest) {
|
| 12 |
try {
|
|
|
|
| 15 |
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
| 16 |
}
|
| 17 |
|
| 18 |
+
// Fetch from userRepositories junction table - the actual source of truth
|
| 19 |
+
// for repos tracked via POST /api/contributor/track-repo
|
| 20 |
+
const trackedRepos = await getUserRepositories(user.id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
|
| 22 |
// Return just the repository names for easy consumption
|
| 23 |
+
const repoNames = trackedRepos.map(repo => repo.repoFullName);
|
| 24 |
|
| 25 |
return NextResponse.json({
|
| 26 |
repositories: repoNames,
|
| 27 |
count: repoNames.length,
|
| 28 |
+
details: trackedRepos,
|
| 29 |
});
|
| 30 |
|
| 31 |
} catch (error) {
|