● Zion Boggan
repos/Docket/app/api/votes/route.ts
zionboggan.com ↗
31 lines · typescript
History for this file →
1
import { NextResponse, type NextRequest } from "next/server";
2
import { parsePaging, type ItemList } from "@/lib/db";
3
import { getVotesFiltered, getVoteCountFiltered, type Vote, type VoteFilter } from "@/lib/feed";
4
 
5
export const dynamic = "force-dynamic";
6
 
7
export async function GET(req: NextRequest) {
8
  const sp = req.nextUrl.searchParams;
9
  const { limit, offset } = parsePaging(sp);
10
 
11
  const resultParam = sp.get("result") ?? "";
12
  const sortParam = sp.get("sort") ?? "";
13
 
14
  const filter: VoteFilter = {
15
    chamber: sp.get("chamber")?.toLowerCase() || undefined,
16
    q: sp.get("q") || undefined,
17
    resultFilter:
18
      resultParam === "passed" ? "passed" :
19
      resultParam === "failed" ? "failed" :
20
      undefined,
21
    sort:
22
      sortParam === "chamber" ? "chamber" :
23
      sortParam === "result"  ? "result"  :
24
      undefined,
25
  };
26
 
27
  const items = getVotesFiltered(filter, limit, offset);
28
  const total = getVoteCountFiltered(filter);
29
  const body: ItemList<Vote> = { items, total, limit, offset };
30
  return NextResponse.json(body);
31
}