Spaces:
Sleeping
Sleeping
Commit ·
4a0e5a2
1
Parent(s): 4d239f3
apply new changes
Browse files- src/lib/db/queries/issues.ts +18 -8
src/lib/db/queries/issues.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
| 8 |
|
| 9 |
import { db } from "@/db";
|
| 10 |
import { issues, triageData, repositories } from "@/db/schema";
|
| 11 |
-
import { eq, and, desc, asc, count, or, like, sql } from "drizzle-orm";
|
| 12 |
import { v4 as uuidv4 } from "uuid";
|
| 13 |
|
| 14 |
// Define columns to select (excludes bodySummary which doesn't exist in DB yet)
|
|
@@ -178,7 +178,7 @@ export async function getIssues(filters: IssueFilters, page = 1, limit = 10) {
|
|
| 178 |
const repoIds = userRepos.map(r => r.id);
|
| 179 |
|
| 180 |
if (repoIds.length > 0) {
|
| 181 |
-
conditions.push(
|
| 182 |
} else {
|
| 183 |
return { issues: [], total: 0, page: safePage, limit, totalPages: 0 };
|
| 184 |
}
|
|
@@ -268,7 +268,7 @@ export async function getIssuesWithTriage(filters: IssueFilters, page = 1, limit
|
|
| 268 |
const repoIds = userRepos.map(r => r.id);
|
| 269 |
|
| 270 |
if (repoIds.length > 0) {
|
| 271 |
-
conditions.push(
|
| 272 |
} else {
|
| 273 |
return { issues: [], total: 0, page: safePage, limit, totalPages: 0 };
|
| 274 |
}
|
|
@@ -313,7 +313,7 @@ export async function getIssuesWithTriage(filters: IssueFilters, page = 1, limit
|
|
| 313 |
const issueIds = issueResults.map(i => i.id);
|
| 314 |
const triageDataResults = await db.select()
|
| 315 |
.from(triageData)
|
| 316 |
-
.where(
|
| 317 |
|
| 318 |
console.log("[getIssuesWithTriage] Found %d triage records", triageDataResults.length);
|
| 319 |
|
|
@@ -400,20 +400,30 @@ export async function getDashboardStats(userId: string) {
|
|
| 400 |
}
|
| 401 |
|
| 402 |
const repoIds = userRepos.map(r => r.id);
|
| 403 |
-
const repoCondition = sql`${issues.repoId} IN (${sql.join(repoIds.map(id => sql`${id}`), sql`, `)})`;
|
| 404 |
|
| 405 |
const openIssues = await db.select({ count: count() })
|
| 406 |
.from(issues)
|
| 407 |
-
.where(and(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 408 |
|
| 409 |
const openPRs = await db.select({ count: count() })
|
| 410 |
.from(issues)
|
| 411 |
-
.where(and(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 412 |
|
| 413 |
// Count triaged issues
|
| 414 |
const allOpenIssueIds = await db.select({ id: issues.id })
|
| 415 |
.from(issues)
|
| 416 |
-
.where(and(
|
|
|
|
|
|
|
|
|
|
| 417 |
|
| 418 |
let triaged = 0;
|
| 419 |
for (const issue of allOpenIssueIds) {
|
|
|
|
| 8 |
|
| 9 |
import { db } from "@/db";
|
| 10 |
import { issues, triageData, repositories } from "@/db/schema";
|
| 11 |
+
import { eq, and, desc, asc, count, or, like, sql, inArray } from "drizzle-orm";
|
| 12 |
import { v4 as uuidv4 } from "uuid";
|
| 13 |
|
| 14 |
// Define columns to select (excludes bodySummary which doesn't exist in DB yet)
|
|
|
|
| 178 |
const repoIds = userRepos.map(r => r.id);
|
| 179 |
|
| 180 |
if (repoIds.length > 0) {
|
| 181 |
+
conditions.push(inArray(issues.repoId, repoIds));
|
| 182 |
} else {
|
| 183 |
return { issues: [], total: 0, page: safePage, limit, totalPages: 0 };
|
| 184 |
}
|
|
|
|
| 268 |
const repoIds = userRepos.map(r => r.id);
|
| 269 |
|
| 270 |
if (repoIds.length > 0) {
|
| 271 |
+
conditions.push(inArray(issues.repoId, repoIds));
|
| 272 |
} else {
|
| 273 |
return { issues: [], total: 0, page: safePage, limit, totalPages: 0 };
|
| 274 |
}
|
|
|
|
| 313 |
const issueIds = issueResults.map(i => i.id);
|
| 314 |
const triageDataResults = await db.select()
|
| 315 |
.from(triageData)
|
| 316 |
+
.where(inArray(triageData.issueId, issueIds));
|
| 317 |
|
| 318 |
console.log("[getIssuesWithTriage] Found %d triage records", triageDataResults.length);
|
| 319 |
|
|
|
|
| 400 |
}
|
| 401 |
|
| 402 |
const repoIds = userRepos.map(r => r.id);
|
|
|
|
| 403 |
|
| 404 |
const openIssues = await db.select({ count: count() })
|
| 405 |
.from(issues)
|
| 406 |
+
.where(and(
|
| 407 |
+
inArray(issues.repoId, repoIds),
|
| 408 |
+
eq(issues.state, "open"),
|
| 409 |
+
eq(issues.isPR, false)
|
| 410 |
+
));
|
| 411 |
|
| 412 |
const openPRs = await db.select({ count: count() })
|
| 413 |
.from(issues)
|
| 414 |
+
.where(and(
|
| 415 |
+
inArray(issues.repoId, repoIds),
|
| 416 |
+
eq(issues.state, "open"),
|
| 417 |
+
eq(issues.isPR, true)
|
| 418 |
+
));
|
| 419 |
|
| 420 |
// Count triaged issues
|
| 421 |
const allOpenIssueIds = await db.select({ id: issues.id })
|
| 422 |
.from(issues)
|
| 423 |
+
.where(and(
|
| 424 |
+
inArray(issues.repoId, repoIds),
|
| 425 |
+
eq(issues.state, "open")
|
| 426 |
+
));
|
| 427 |
|
| 428 |
let triaged = 0;
|
| 429 |
for (const issue of allOpenIssueIds) {
|