index.ts 2.07 KB
import { ClearEventsParam, RuleChainPaginationItemType } from './model/type';
import { TBPaginationResult } from '/#/axios';
import { defHttp } from '/@/utils/http/axios';
import { RuleChainDetail, RuleChainType } from '/@/views/rule/designer/types/ruleNode';

enum Api {
  SAVE_RULE_CHAINS = '/ruleChain',
  GET_RULE_CHAINS_DETAIL = '/ruleChain',
  SAVE = '/ruleChain/metadata',
  GET_RULE_CHAINES = '/ruleChains',
  GET_RULE_NODE_EVENTS = '/events/RULE_NODE',
}

export const saveRuleChainDetail = (params: Partial<RuleChainDetail>) => {
  return defHttp.post<RuleChainDetail>(
    {
      url: Api.SAVE_RULE_CHAINS,
      data: params,
    },
    { joinPrefix: false }
  );
};

export const getRuleChainDetail = (id: string) => {
  return defHttp.get<RuleChainDetail>(
    {
      url: `${Api.GET_RULE_CHAINS_DETAIL}/${id}`,
    },
    { joinPrefix: false }
  );
};

export const getRuleChainData = (id: string) => {
  return defHttp.get<RuleChainType>(
    {
      url: `/ruleChain/${id}/metadata`,
    },
    { joinPrefix: false }
  );
};

export const saveRuleChainData = (data: RuleChainType) => {
  return defHttp.post(
    {
      url: Api.SAVE,
      data,
    },
    { joinPrefix: false }
  );
};

export const getRuleChains = (params: Recordable) => {
  return defHttp.get<TBPaginationResult<RuleChainPaginationItemType>>(
    {
      url: Api.GET_RULE_CHAINES,
      params,
    },
    {
      joinPrefix: false,
    }
  );
};

export const getRuleNodeEventList = (
  ruleNodeId: string,
  params: Recordable,
  data: Recordable & Record<'eventType', string>
) => {
  return defHttp.post<TBPaginationResult>(
    {
      url: `${Api.GET_RULE_NODE_EVENTS}/${ruleNodeId}`,
      params,
      data,
    },
    { joinPrefix: false }
  );
};

export const doClearEvents = ({
  tenantId,
  startTime,
  endTime,
  eventType,
  ruleId,
}: ClearEventsParam) => {
  return defHttp.post(
    {
      url: `${Api.GET_RULE_NODE_EVENTS}/${ruleId}/clear`,
      params: {
        startTime,
        endTime,
        tenantId,
      },
      data: {
        eventType,
      },
    },
    { joinPrefix: false }
  );
};