import { query } from "./db";

export type AdminActivityOutcome = "success" | "denied" | "error" | "failure";

export async function logAdminActivity(input: {
  adminId?: number | null;
  username?: string | null;
  action: string;
  resource?: string | null;
  outcome: AdminActivityOutcome;
  ip?: string | null;
  userAgent?: string | null;
  meta?: Record<string, unknown>;
}) {
  try {
    await query(
      `INSERT INTO admin_activity_logs
        (admin_id, username, action, resource, outcome, ip, user_agent, meta)
       VALUES
        (:admin_id, :username, :action, :resource, :outcome, :ip, :user_agent, :meta)`,
      {
        admin_id: input.adminId ?? null,
        username: input.username ?? null,
        action: input.action.slice(0, 80),
        resource: input.resource?.slice(0, 120) || null,
        outcome: input.outcome,
        ip: input.ip || null,
        user_agent: input.userAgent?.slice(0, 250) || null,
        meta: JSON.stringify(input.meta || {}),
      },
    );
  } catch (e) {
    console.error("admin activity log failed", e);
  }
}
