UNPKG

@orchestrator-ui/orchestrator-ui-components

Version:

Library of UI Components used to display the workflow orchestrator frontend

70 lines (63 loc) 2.15 kB
import { NUMBER_OF_ITEMS_REPRESENTING_ALL_ITEMS } from '@/configuration'; import { orchestratorApi } from '@/rtk'; import { CacheTagType } from '@/types'; import { InUseByRelationDetail, InUseByRelationsDetailResult, SubscriptionStatus, } from '@/types'; import { getCacheTag } from '@/utils/cacheTag'; const nonTerminalSubscriptionStatuses = [ SubscriptionStatus.INITIAL, SubscriptionStatus.ACTIVE, SubscriptionStatus.MIGRATING, SubscriptionStatus.DISABLED, SubscriptionStatus.PROVISIONING, ].join('|'); export const subscriptionInUseByRelationQuery = ` query SubscriptionsInUseByRelationsDetails( $subscriptionIds: String! ) { subscriptions( first: ${NUMBER_OF_ITEMS_REPRESENTING_ALL_ITEMS} after: 0 filterBy: [{field: "subscriptionId", value: $subscriptionIds},{field: "status", value: "${nonTerminalSubscriptionStatuses}"}] ) { page { product { name } description subscriptionId status } } } `; export type InUseByRelationsDetailResponse = { inUseByRelationDetails: InUseByRelationDetail[]; }; const subscriptionInUseByRelationsListApi = orchestratorApi.injectEndpoints({ endpoints: (builder) => ({ getInUseByRelationDetails: builder.query< InUseByRelationsDetailResponse, { subscriptionIds: string } >({ query: (variables) => ({ document: subscriptionInUseByRelationQuery, variables, }), transformResponse: ( response: InUseByRelationsDetailResult, ): InUseByRelationsDetailResponse => { const subscriptions = response.subscriptions.page || []; return { inUseByRelationDetails: subscriptions, }; }, providesTags: getCacheTag(CacheTagType.subscriptions), }), }), }); export const { useGetInUseByRelationDetailsQuery } = subscriptionInUseByRelationsListApi;