import type { AuditOperationQuery } from './types';
|
|
import { getAuditEventDetail, getAuditEventPage, getAuditEventTimeline } from '#/api/x/audit/events';
|
import { parseAuditEventFieldDiffs } from '#/components/FormExtraPanel/auditDiff';
|
|
import { groupTimelineOperations, normalizeOperation } from './auditOperation';
|
|
/** Single request boundary used by the list, detail, and timeline views. */
|
export const auditOperationQuery: AuditOperationQuery = {
|
async detail(eventId) {
|
const response = await getAuditEventDetail(eventId);
|
const detail = response.data;
|
const parsedDiffs = parseAuditEventFieldDiffs(detail.fieldDiffList, detail.fieldDiffs);
|
return {
|
...detail,
|
fieldDiffList: parsedDiffs.diffs,
|
fieldDiffParseError: parsedDiffs.parseError,
|
};
|
},
|
|
async page(query) {
|
const response = await getAuditEventPage(query);
|
const page = response.data;
|
return {
|
list: Array.isArray(page?.list) ? page.list.map((event) => normalizeOperation(event)) : [],
|
pagination: page?.pagination || {
|
currentPage: query.currentPage,
|
pageSize: query.pageSize,
|
total: 0,
|
},
|
};
|
},
|
|
async timeline(targetId) {
|
const response = await getAuditEventTimeline(targetId);
|
return groupTimelineOperations(Array.isArray(response.data) ? response.data : []);
|
},
|
};
|