"use server";

import { ServerAction } from "@/lib/actions";
import { ServerResponse } from "@/lib/actions";
import { ResultSetHeader } from "mysql2";

export default async function deleteUsers(formData: FormData) {
  const { error, con, dict } = await ServerAction();

  if (error) {
    return ServerResponse({
      operation: false,
      data: error,
    });
  }

  const ids = JSON.parse(formData.get("ids") as string) as string[];

  try {
    const promises = ids.map(async (id) => {
      const [result] = await con.query<ResultSetHeader>(
        "DELETE FROM USERS WHERE id = ?",
        [id],
      );

      return {
        id,
        result:
          result.affectedRows === 1
            ? {
                success: dict.alerts.create_profile.success_item,
              }
            : {
                error: dict.alerts.create_profile.error_item,
              },
      };
    });

    const resultList = await Promise.all(promises);

    return ServerResponse({
      operation: true,
      message: dict.alerts.create_profile.success,
      data: resultList,
    });
  } catch (error) {
    return ServerResponse({
      operation: false,
      message: dict.alerts.general.unexpected_error,
      data: error,
    });
  } finally {
    con.release();
  }
}
