import { all, run } from "./db";
import { randomId } from "./crypto";
export type AdminAuditEntry = {
id: string;
actor_id: string | null;
actor_name: string | null;
action: string;
target_kind: string;
target_id: string;
reason: string | null;
created_at: number;
};
export type AdminAuditInput = {
actorId: string;
action: string;
targetKind: string;
targetId: string;
reason?: string | null;
};
const MAX_REASON = 1000;
/** Appends one site-admin action to the audit log. */
export async function recordAdminAction(input: AdminAuditInput): Promise<void> {
await run(
`INSERT INTO admin_audit_log (id, actor_id, action, target_kind, target_id, reason, created_at)
VALUES (?, ?, ?, ?, ?, ?, ?)`,
randomId(),
input.actorId,
input.action,
input.targetKind,
input.targetId,
input.reason?.trim().slice(0, MAX_REASON) || null,
Date.now(),
);
}
/** Keyset position: entries strictly after this one in (created_at DESC, id DESC) order. */