61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
import {
|
|
AuditApiResponse,
|
|
AuditQueryResult,
|
|
DEFAULT_PAGE_SIZE,
|
|
extractArray,
|
|
normalizeRows,
|
|
resolveTotal,
|
|
} from "@/app/dashboard/audits/auditTransforms";
|
|
import { IGetAuditsParams } from "./types";
|
|
import { AUDIT_CACHE_TAG, REVALIDATE_SECONDS } from "./constants";
|
|
|
|
export async function getAudits({
|
|
limit = DEFAULT_PAGE_SIZE,
|
|
page = 1,
|
|
sort,
|
|
filter,
|
|
entity,
|
|
signal,
|
|
}: IGetAuditsParams = {}): Promise<AuditQueryResult> {
|
|
const params = new URLSearchParams();
|
|
|
|
if (limit) params.set("limit", String(limit));
|
|
if (page) params.set("page", String(page));
|
|
if (sort) params.set("sort", sort);
|
|
if (filter) params.set("filter", filter);
|
|
if (entity) params.set("Entity", entity);
|
|
|
|
const queryString = params.toString();
|
|
const response = await fetch(
|
|
`/api/dashboard/audits${queryString ? `?${queryString}` : ""}`,
|
|
{
|
|
method: "GET",
|
|
signal,
|
|
next: {
|
|
revalidate: REVALIDATE_SECONDS,
|
|
tags: [AUDIT_CACHE_TAG],
|
|
},
|
|
}
|
|
);
|
|
|
|
if (!response.ok) {
|
|
const errorData = await response
|
|
.json()
|
|
.catch(() => ({ message: "Unknown error" }));
|
|
throw new Error(errorData.message || "Failed to fetch audits");
|
|
}
|
|
|
|
const payload = (await response.json()) as AuditApiResponse;
|
|
const pageIndex = page - 1;
|
|
const auditEntries = extractArray(payload);
|
|
const rows = normalizeRows(auditEntries, pageIndex);
|
|
const total = resolveTotal(payload, rows.length);
|
|
|
|
return {
|
|
rows,
|
|
total,
|
|
payload,
|
|
pageIndex,
|
|
};
|
|
}
|