swadhinbiswas Fix: Add date validation in analysis.ts to prevent RangeError · 1/20/2026
a7662cd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import type { APIRoute } from 'astro';
import type { NodePgDatabase } from "drizzle-orm/node-postgres";
import { getDatabase, schema } from '@/db';
import { like, or, eq, desc } from 'drizzle-orm';
import { success, serverError } from '@/lib/api';
import { withErrorHandler } from "@/lib/errors";
export const GET: APIRoute = withErrorHandler(async ({ request }) => {
const url = new URL(request.url);
const query = url.searchParams.get('q');
if (!query || query.length < 2) {
return success({ results: [] });
}
const db = getDatabase() as NodePgDatabase<typeof schema>;
// Search Repositories
const repos = await db.query.repositories.findMany({
where: or(
like(schema.repositories.name, `%${query}%`),
like(schema.repositories.description, `%${query}%`)
),
with: {
owner: true
},
limit: 5,
orderBy: [desc(schema.repositories.starCount)]
});
// Search Users
const users = await db.query.users.findMany({
where: or(
like(schema.users.username, `%${query}%`),
like(schema.users.displayName, `%${query}%`)
),
limit: 3
});
// Search Issues
const issues = await db.query.issues.findMany({
where: or(
like(schema.issues.title, `%${query}%`),
like(schema.issues.body, `%${query}%`)
),
with: {
repository: {
with: {
owner: true
}
}
},
limit: 5
});
// Search Pull Requests
const prs = await db.query.pullRequests.findMany({
where: or(
like(schema.pullRequests.title, `%${query}%`),
like(schema.pullRequests.body, `%${query}%`)
),
with: {
repository: {
with: {
owner: true
}
}
},
limit: 5
});
// Search Workflows
const workflows = await db.query.workflows.findMany({
where: like(schema.workflows.name, `%${query}%`),
with: {
repository: {
with: {
owner: true
}
}
},
limit: 5
});
// Format Results
const results = [
...repos.map(repo => ({
type: 'repository',
title: `${repo.owner.username}/${repo.name}`,
subtitle: repo.description,
url: `/${repo.owner.username}/${repo.name}`,
icon: 'repo'
})),
...users.map(user => ({
type: 'user',
title: user.displayName || user.username,
subtitle: `@${user.username}`,
url: `/${user.username}`,
icon: 'user'
})),
...issues.map((issue: any) => ({
type: 'issue',
title: issue.title,
subtitle: `${issue.repository.owner.username}/${issue.repository.name} #${issue.number}`,
url: `/${issue.repository.owner.username}/${issue.repository.name}/issues/${issue.number}`,
icon: 'issue'
})),
...prs.map((pr: any) => ({
type: 'pr',
title: pr.title,
subtitle: `${pr.repository.owner.username}/${pr.repository.name} #${pr.number}`,
url: `/${pr.repository.owner.username}/${pr.repository.name}/pulls/${pr.number}`,
icon: 'pr'
})),
...workflows.map((wf: any) => ({
type: 'workflow',
title: wf.name,
subtitle: `${wf.repository.owner.username}/${wf.repository.name}`,
url: `/${wf.repository.owner.username}/${wf.repository.name}/actions`, // Link to actions tab
icon: 'workflow'
}))
];
return success({ results });
});