import type { PoolConnection } from 'mysql2/promise';
import { execute } from '../../config/database.js';

export async function insert(
  data: {
    user_id?: string;
    entity_type: string;
    entity_id?: string;
    action: string;
    old_values?: unknown;
    new_values?: unknown;
    description?: string;
    ip_address?: string;
  },
  id: string,
  conn?: PoolConnection,
): Promise<void> {
  const e = conn ? conn.execute.bind(conn) : execute;
  await e(
    `INSERT INTO activity_logs (id, user_id, entity_type, entity_id, action, old_values, new_values, description, ip_address)
     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
    [
      id,
      data.user_id ?? null,
      data.entity_type,
      data.entity_id ?? null,
      data.action,
      data.old_values ? JSON.stringify(data.old_values) : null,
      data.new_values ? JSON.stringify(data.new_values) : null,
      data.description ?? null,
      data.ip_address ?? null,
    ],
  );
}
