refactor: 统一管理页面布局 — FilterToolbar + usePageSearchParams + parseListParams
This commit is contained in:
@@ -4,22 +4,24 @@ import type { RuntimeMode } from "../../../shared/api";
|
||||
import type { Logger } from "../../logger";
|
||||
|
||||
import { listProviders } from "../../db/providers";
|
||||
import { jsonResponse } from "../../helpers";
|
||||
import { validatePagination } from "../../middleware";
|
||||
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 pageParam = url.searchParams.get("page");
|
||||
const pageSizeParam = url.searchParams.get("pageSize");
|
||||
const keyword = url.searchParams.get("keyword");
|
||||
const typeParam = url.searchParams.get("type");
|
||||
|
||||
const pagination = validatePagination(pageParam, pageSizeParam, mode);
|
||||
if (pagination instanceof Response) return pagination;
|
||||
const parsed = parseListParams(url, mode, { allowedSortBy: ALLOWED_SORT_BY });
|
||||
if (parsed instanceof Response) return parsed;
|
||||
|
||||
const result = listProviders(db, {
|
||||
keyword: keyword ?? undefined,
|
||||
page: pagination.page,
|
||||
pageSize: pagination.pageSize,
|
||||
keyword: parsed.keyword,
|
||||
page: parsed.page,
|
||||
pageSize: parsed.pageSize,
|
||||
sortBy: parsed.sortBy,
|
||||
sortOrder: parsed.sortOrder,
|
||||
type: typeParam ?? undefined,
|
||||
});
|
||||
|
||||
return jsonResponse(result, { mode });
|
||||
|
||||
Reference in New Issue
Block a user