import ShowQueueService from "./ShowQueueService";

import UserQueue from "../../models/UserQueue";

import ListTicketsServiceCache from "../TicketServices/ListTicketServiceCache";

import { deleteTicketsFieldsCache } from "../../helpers/TicketCache";
import { del } from "../../helpers/RedisClient";

const DeleteQueueService = async (queueId: number | string): Promise<void> => {
  const queue = await ShowQueueService(queueId);

  if (queue.id) {
    const tickets = await ListTicketsServiceCache({ queueId });

    await deleteTicketsFieldsCache(tickets, [
      "queue.id",
      "queue.name",
      "queue.color"
    ]);
  }

  try {
    await UserQueue.destroy({ where: { queueId: queueId } });

    del(`queue:${queueId}`);
  } catch (error) {
    console.log("Error on delete UserQueue by queueId: ", queueId);
  }

  await queue.destroy();
};

export default DeleteQueueService;
