/* eslint-disable  @typescript-eslint/explicit-module-boundary-types */
import sendRequest from "services";

import endpoints from "fleet/endpoints";
import { IEditScheduledQuery } from "interfaces/scheduled_query";
import helpers from "fleet/helpers";

export default {
  create: (formData: any) => {
    const { GLOBAL_SCHEDULE } = endpoints;

    const {
      interval,
      logging_type: loggingType,
      platform,
      query_id: queryID,
      shard,
      version,
    } = formData;

    const removed = loggingType === "differential";
    const snapshot = loggingType === "snapshot";

    const params = {
      interval: Number(interval),
      platform,
      query_id: Number(queryID),
      removed,
      snapshot,
      shard: Number(shard),
      version,
    };

    return sendRequest("POST", GLOBAL_SCHEDULE, params);
  },
  destroy: ({ id }: { id: number }) => {
    const { GLOBAL_SCHEDULE } = endpoints;
    const path = `${GLOBAL_SCHEDULE}/${id}`;

    return sendRequest("DELETE", path);
  },
  loadAll: () => {
    const { GLOBAL_SCHEDULE } = endpoints;
    const path = GLOBAL_SCHEDULE;

    return sendRequest("GET", path);
  },
  update: (
    globalScheduledQuery: IEditScheduledQuery,
    updatedAttributes: any
  ) => {
    const { GLOBAL_SCHEDULE } = endpoints;
    const path = `${GLOBAL_SCHEDULE}/${globalScheduledQuery.id}`;
    const params = helpers.formatScheduledQueryForServer(updatedAttributes);

    return sendRequest("PATCH", path, params);
  },
};
