29 lines
896 B
TypeScript
29 lines
896 B
TypeScript
import type Database from "bun:sqlite";
|
|
|
|
import type { RuntimeMode } from "../../../shared/api";
|
|
import type { Logger } from "../../logger";
|
|
|
|
import { listProviders } from "../../db/providers";
|
|
import { jsonResponse, parseListParams } from "../../helpers";
|
|
|
|
const ALLOWED_SORT_BY = ["createdAt", "name"];
|
|
|
|
export function handleListProviders(req: Request, db: Database, mode: RuntimeMode, _logger: Logger): Response {
|
|
const url = new URL(req.url);
|
|
const typeParam = url.searchParams.get("type");
|
|
|
|
const parsed = parseListParams(url, mode, { allowedSortBy: ALLOWED_SORT_BY });
|
|
if (parsed instanceof Response) return parsed;
|
|
|
|
const result = listProviders(db, {
|
|
keyword: parsed.keyword,
|
|
page: parsed.page,
|
|
pageSize: parsed.pageSize,
|
|
sortBy: parsed.sortBy,
|
|
sortOrder: parsed.sortOrder,
|
|
type: typeParam ?? undefined,
|
|
});
|
|
|
|
return jsonResponse(result, { mode });
|
|
}
|