UNPKG

@orchestrator-ui/orchestrator-ui-components

Version:

Library of UI Components used to display the workflow orchestrator frontend

101 lines (93 loc) 2.96 kB
import { BaseGraphQlResult, GraphqlFilter, GraphqlQueryVariables, RelatedSubscription, RelatedSubscriptionsResult, Subscription, } from '@/types'; import { orchestratorApi } from '../api'; export const RelatedSubscriptionsQuery = ` query RelatedSubscriptions( $subscriptionId: String! $first: Int! $after: Int! $sortBy: [GraphqlSort!] $terminatedSubscriptionFilter: [GraphqlFilter!] ) { subscriptions( filterBy: { value: $subscriptionId, field: "subscriptionId" } ) { page { subscriptionId inUseBySubscriptions( first: $first after: $after sortBy: $sortBy filterBy: $terminatedSubscriptionFilter ) { page { subscriptionId customer { fullname } description insync startDate status product { tag } } pageInfo { endCursor hasNextPage hasPreviousPage startCursor totalItems sortFields filterFields } } } } } `; export type RelatedSubscriptionsResponse = { relatedSubscriptions: RelatedSubscription[]; } & BaseGraphQlResult; export type RelatedSubscriptionVariables = GraphqlQueryVariables<RelatedSubscription> & Pick<Subscription, 'subscriptionId'> & { terminatedSubscriptionFilter?: GraphqlFilter<RelatedSubscription>; }; const relatedSubscriptionsApi = orchestratorApi.injectEndpoints({ endpoints: (build) => ({ getRelatedSubscriptions: build.query< RelatedSubscriptionsResponse, RelatedSubscriptionVariables >({ query: (variables) => ({ document: RelatedSubscriptionsQuery, variables, }), transformResponse: ( result: RelatedSubscriptionsResult, ): RelatedSubscriptionsResponse => { const relatedSubscriptionResultForSubscription = result.subscriptions.page[0] || []; const relatedSubscriptions = relatedSubscriptionResultForSubscription .inUseBySubscriptions.page || []; const pageInfo = relatedSubscriptionResultForSubscription .inUseBySubscriptions.pageInfo || {}; return { relatedSubscriptions, pageInfo, }; }, }), }), }); export const { useGetRelatedSubscriptionsQuery } = relatedSubscriptionsApi;