// finance_audit_log rows. Returned as TxOps so every change and its audit row // commit (or roll back) together. import { financeAuditLog } from '../../db/index.js'; import { generateId, getNow } from '../utils.js'; import { insertOp, type TxOp } from '../txOps.js'; export type FinanceEntity = | 'expense' | 'other_income' | 'partner' | 'finance_state' | 'member' | 'expense_category' | 'expense_template' | 'expense_template_pack' | 'payment_fee'; export function financeAuditOp(entry: { eventId: string | null; actorUserId: string; entityType: FinanceEntity; entityId: string | null; action: string; before?: unknown; after?: unknown; }): TxOp { return insertOp(financeAuditLog, { id: generateId(), eventId: entry.eventId, actorUserId: entry.actorUserId, entityType: entry.entityType, entityId: entry.entityId, action: entry.action, beforeJson: entry.before === undefined || entry.before === null ? null : JSON.stringify(entry.before), afterJson: entry.after === undefined || entry.after === null ? null : JSON.stringify(entry.after), createdAt: getNow(), }); }