import { diffFields } from '@/lib/audit'; const SKIP_FIELDS = new Set(['createdAt', 'updatedAt', 'portId']); /** * Wraps `diffFields` with automatic exclusion of metadata fields * (createdAt, updatedAt, portId). */ export function diffEntity>( oldRecord: T, newRecord: Partial, ): { changed: boolean; diff: Record } { // Only compare keys present in newRecord const filteredOld: Record = {}; const filteredNew: Record = {}; for (const key of Object.keys(newRecord)) { if (SKIP_FIELDS.has(key)) continue; filteredOld[key] = oldRecord[key]; filteredNew[key] = newRecord[key]; } const changes = diffFields(filteredOld, filteredNew); const diff: Record = {}; for (const change of changes) { diff[change.field] = { old: change.oldValue, new: change.newValue }; } return { changed: changes.length > 0, diff }; }