swadhinbiswas feat: optimize Docker CI/CD builds, refine site-wide UI aesthetic, and remediate secrets · 8/19/2026
c3e5c18
41 lines · 1.2 KB
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
import type { APIRoute } from "astro";
import { getDb } from "@/lib/db";
import { cachedRepos, cachedUsers } from "@/lib/db/schema";
import { like, or } from "drizzle-orm";

export const prerender = false;

export const GET: APIRoute = async ({ url }) => {
  try {
    const q = url.searchParams.get("q") || "";
    if (!q || q.length < 2) {
      return new Response(JSON.stringify({ success: true, data: { repos: [], users: [] } }), { status: 200 });
    }

    const db = getDb() as any;
    const searchPattern = `%${q}%`;

    const repos = await db.query.cachedRepos.findMany({
      where: or(
        like(cachedRepos.fullName, searchPattern),
        like(cachedRepos.description, searchPattern)
      ),
      limit: 10,
      with: { instance: true }
    });

    const users = await db.query.cachedUsers.findMany({
      where: or(
        like(cachedUsers.username, searchPattern),
        like(cachedUsers.displayName, searchPattern)
      ),
      limit: 5,
      with: { instance: true }
    });

    return new Response(JSON.stringify({ success: true, data: { repos, users } }), { status: 200 });
  } catch (error: any) {
    return new Response(JSON.stringify({ success: false, error: error.message }), { status: 500 });
  }
};