1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import { consumerGroupsApiClient as api } from 'lib/api';
- import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
- import { ClusterName } from 'redux/interfaces';
- import {
- ConsumerGroup,
- ConsumerGroupOffsetsReset,
- ConsumerGroupOrdering,
- SortOrder,
- } from 'generated-sources';
- import { showSuccessAlert } from 'lib/errorHandling';
- export type ConsumerGroupID = ConsumerGroup['groupId'];
- type UseConsumerGroupsProps = {
- clusterName: ClusterName;
- orderBy?: ConsumerGroupOrdering;
- sortOrder?: SortOrder;
- page?: number;
- perPage?: number;
- search: string;
- };
- type UseConsumerGroupDetailsProps = {
- clusterName: ClusterName;
- consumerGroupID: ConsumerGroupID;
- };
- export function useConsumerGroups(props: UseConsumerGroupsProps) {
- const { clusterName, ...rest } = props;
- return useQuery(
- ['clusters', clusterName, 'consumerGroups', rest],
- () => api.getConsumerGroupsPage(props),
- { suspense: false, keepPreviousData: true }
- );
- }
- export function useConsumerGroupDetails(props: UseConsumerGroupDetailsProps) {
- const { clusterName, consumerGroupID } = props;
- return useQuery(
- ['clusters', clusterName, 'consumerGroups', consumerGroupID],
- () => api.getConsumerGroup({ clusterName, id: consumerGroupID })
- );
- }
- export const useDeleteConsumerGroupMutation = ({
- clusterName,
- consumerGroupID,
- }: UseConsumerGroupDetailsProps) => {
- const queryClient = useQueryClient();
- return useMutation(
- () => api.deleteConsumerGroup({ clusterName, id: consumerGroupID }),
- {
- onSuccess: () => {
- showSuccessAlert({
- message: `Consumer ${consumerGroupID} group deleted`,
- });
- queryClient.invalidateQueries([
- 'clusters',
- clusterName,
- 'consumerGroups',
- ]);
- },
- }
- );
- };
- export const useResetConsumerGroupOffsetsMutation = ({
- clusterName,
- consumerGroupID,
- }: UseConsumerGroupDetailsProps) => {
- const queryClient = useQueryClient();
- return useMutation(
- (props: ConsumerGroupOffsetsReset) =>
- api.resetConsumerGroupOffsets({
- clusterName,
- id: consumerGroupID,
- consumerGroupOffsetsReset: props,
- }),
- {
- onSuccess: () => {
- showSuccessAlert({
- message: `Consumer ${consumerGroupID} group offsets reset`,
- });
- queryClient.invalidateQueries([
- 'clusters',
- clusterName,
- 'consumerGroups',
- ]);
- },
- }
- );
- };
|