KrishnaCosmic commited on
Commit
bd419f7
·
1 Parent(s): b6b16e1
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 contributed to
64
- const uniqueRepos = new Set(allItems.map(item => item.repoName).filter(Boolean));
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 { db } from "@/db";
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 repositories that the user has explicitly added
21
- const trackedRepos = await db
22
- .select({
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.name);
39
 
40
  return NextResponse.json({
41
  repositories: repoNames,
42
  count: repoNames.length,
43
- details: trackedRepos, // Include full details for potential future use
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) {