Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions libs/data-access/admin-api-hooks/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ export {
useBatchKillInvocations,
useBatchPauseInvocations,
useBatchResumeInvocations,
useBatchRestateAsNewInvocations,
} from './lib/batchHooks';
92 changes: 87 additions & 5 deletions libs/data-access/admin-api-hooks/src/lib/batchHooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,17 @@ function useIsPaused() {
}, []);

return {
cancel: (id: string) => {
globalThis.batchOperationPromises?.[id]?.reject?.(true);
globalThis.batchOperationPromises = {
...globalThis.batchOperationPromises,
[id]: null,
};
setIsPaused((old) => {
delete old[id];
return old;
});
},
isPaused: (id: string) => isPaused[id] === true,
pause(id: string) {
globalThis.batchOperationPromises = {
Expand Down Expand Up @@ -179,7 +190,7 @@ export function useBatchCancelInvocations(
},
);

const { pause, resume, isPaused } = useIsPaused();
const { pause, resume, isPaused, cancel } = useIsPaused();
const { mutationFn } = toBatchMutationFn(
batchSize,
mutationOptions.mutationFn,
Expand Down Expand Up @@ -212,6 +223,7 @@ export function useBatchCancelInvocations(
pause,
resume,
isPaused,
cancel,
};
}

Expand Down Expand Up @@ -244,7 +256,73 @@ export function useBatchPurgeInvocations(
},
);

const { pause, resume, isPaused } = useIsPaused();
const { pause, resume, isPaused, cancel } = useIsPaused();
const { mutationFn } = toBatchMutationFn(
batchSize,
mutationOptions.mutationFn,
onProgress,
);

const result = useMutation({
...mutationOptions,
...restOptions,
mutationFn,
onSuccess(data, variables, context, meta) {
queryClient.invalidateQueries({
queryKey: ['/query/invocations'],
});

onSuccess?.(data, variables, context, meta);
},
onError(error, variables, onMutateResult, context) {
onError?.(error, variables, onMutateResult, context);
},
onSettled(data, error, variables, onMutateResult, context) {
onSettled?.(data, error, variables, onMutateResult, context);
},
onMutate(variables, context) {
onMutate?.(variables, context);
},
});
return {
...result,
pause,
resume,
isPaused,
cancel,
};
}

export function useBatchRestateAsNewInvocations(
batchSize: number,
options?: Omit<
HookMutationOptions<'/query/invocations/restart-as-new', 'post'>,
'mutationFn'
> & {
onProgress?: (response: BatchInvocationsResponse) => void;
},
) {
const baseUrl = useAdminBaseUrl();
const queryClient = useQueryClient();
const {
onProgress,
onError,
onMutate,
onSettled,
onSuccess,
...restOptions
} = options ?? {};

const mutationOptions = adminApi(
'mutate',
'/query/invocations/restart-as-new',
'post',
{
baseUrl,
},
);

const { pause, resume, isPaused, cancel } = useIsPaused();
const { mutationFn } = toBatchMutationFn(
batchSize,
mutationOptions.mutationFn,
Expand Down Expand Up @@ -277,6 +355,7 @@ export function useBatchPurgeInvocations(
pause,
resume,
isPaused,
cancel,
};
}

Expand Down Expand Up @@ -309,7 +388,7 @@ export function useBatchKillInvocations(
},
);

const { pause, resume, isPaused } = useIsPaused();
const { pause, resume, isPaused, cancel } = useIsPaused();
const { mutationFn } = toBatchMutationFn(
batchSize,
mutationOptions.mutationFn,
Expand Down Expand Up @@ -342,6 +421,7 @@ export function useBatchKillInvocations(
pause,
resume,
isPaused,
cancel,
};
}

Expand Down Expand Up @@ -374,7 +454,7 @@ export function useBatchPauseInvocations(
},
);

const { pause, resume, isPaused } = useIsPaused();
const { pause, resume, isPaused, cancel } = useIsPaused();
const { mutationFn } = toBatchMutationFn(
batchSize,
mutationOptions.mutationFn,
Expand Down Expand Up @@ -408,6 +488,7 @@ export function useBatchPauseInvocations(
pause,
resume,
isPaused,
cancel,
};
}

Expand Down Expand Up @@ -440,7 +521,7 @@ export function useBatchResumeInvocations(
},
);

const { pause, resume, isPaused } = useIsPaused();
const { pause, resume, isPaused, cancel } = useIsPaused();
const { mutationFn } = toBatchMutationFn(
batchSize,
mutationOptions.mutationFn,
Expand Down Expand Up @@ -474,5 +555,6 @@ export function useBatchResumeInvocations(
pause,
resume,
isPaused,
cancel,
};
}
4 changes: 2 additions & 2 deletions libs/data-access/admin-api-hooks/src/lib/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -960,7 +960,7 @@ export function usePauseInvocation(
String(invocationId),
{
refetchOnMount: false,
enabled: Boolean(invocationId),
enabled: false,
},
);

Expand Down Expand Up @@ -1007,7 +1007,7 @@ export function useResumeInvocation(
const baseUrl = useAdminBaseUrl();
const { refetch } = useGetInvocationJournalWithInvocationV2(invocationId, {
refetchOnMount: false,
enabled: Boolean(invocationId),
enabled: false,
});

return useMutation({
Expand Down
100 changes: 98 additions & 2 deletions libs/data-access/admin-api/src/lib/api/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,26 @@ export interface paths {
patch?: never;
trace?: never;
};
'/query/invocations/restart-as-new': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/**
* Batch restart-as-new invocations
* @description Batch restart-as-new invocations
*/
post: operations['batch_restart_as_new_invocations'];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/query/invocations/purge': {
parameters: {
query?: never;
Expand Down Expand Up @@ -1773,7 +1793,9 @@ export interface components {
pageSize?: number;
}
| {
filters: components['schemas']['FilterItem'][];
filters: (components['schemas']['FilterItem'] & {
isActionImplicitFilter?: boolean;
})[];
pageSize?: number;
/** Format: date-time */
createdAfter?: string;
Expand All @@ -1789,7 +1811,9 @@ export interface components {
pageSize?: number;
}
| {
filters: components['schemas']['FilterItem'][];
filters: (components['schemas']['FilterItem'] & {
isActionImplicitFilter?: boolean;
})[];
pageSize?: number;
/** Format: date-time */
createdAfter?: string;
Expand Down Expand Up @@ -4712,6 +4736,78 @@ export interface operations {
};
};
};
batch_restart_as_new_invocations: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
'application/json': components['schemas']['BatchInvocationsRequestBody'];
};
};
responses: {
/** @description Batch restart as new result */
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['BatchInvocationsResponse'];
};
};
400: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['ErrorDescriptionResponse'];
};
};
403: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['ErrorDescriptionResponse'];
};
};
404: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['ErrorDescriptionResponse'];
};
};
409: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['ErrorDescriptionResponse'];
};
};
500: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['ErrorDescriptionResponse'];
};
};
503: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['ErrorDescriptionResponse'];
};
};
};
};
batch_purge_invocations: {
parameters: {
query?: never;
Expand Down
Loading
Loading