feat: mount / unmount

This commit is contained in:
Nicolas Meienberger
2025-09-23 18:22:54 +02:00
parent 833bcb590f
commit f67152146d
17 changed files with 464 additions and 25 deletions

View File

@@ -8,6 +8,8 @@ import {
deleteVolume,
getVolume,
updateVolume,
mountVolume,
unmountVolume,
} from "../sdk.gen";
import { queryOptions, type UseMutationOptions, type DefaultError } from "@tanstack/react-query";
import type {
@@ -21,6 +23,10 @@ import type {
GetVolumeData,
UpdateVolumeData,
UpdateVolumeResponse,
MountVolumeData,
MountVolumeResponse,
UnmountVolumeData,
UnmountVolumeResponse,
} from "../types.gen";
import { client as _heyApiClient } from "../client.gen";
@@ -219,3 +225,81 @@ export const updateVolumeMutation = (
};
return mutationOptions;
};
export const mountVolumeQueryKey = (options: Options<MountVolumeData>) => createQueryKey("mountVolume", options);
/**
* Mount a volume
*/
export const mountVolumeOptions = (options: Options<MountVolumeData>) => {
return queryOptions({
queryFn: async ({ queryKey, signal }) => {
const { data } = await mountVolume({
...options,
...queryKey[0],
signal,
throwOnError: true,
});
return data;
},
queryKey: mountVolumeQueryKey(options),
});
};
/**
* Mount a volume
*/
export const mountVolumeMutation = (
options?: Partial<Options<MountVolumeData>>,
): UseMutationOptions<MountVolumeResponse, DefaultError, Options<MountVolumeData>> => {
const mutationOptions: UseMutationOptions<MountVolumeResponse, DefaultError, Options<MountVolumeData>> = {
mutationFn: async (localOptions) => {
const { data } = await mountVolume({
...options,
...localOptions,
throwOnError: true,
});
return data;
},
};
return mutationOptions;
};
export const unmountVolumeQueryKey = (options: Options<UnmountVolumeData>) => createQueryKey("unmountVolume", options);
/**
* Unmount a volume
*/
export const unmountVolumeOptions = (options: Options<UnmountVolumeData>) => {
return queryOptions({
queryFn: async ({ queryKey, signal }) => {
const { data } = await unmountVolume({
...options,
...queryKey[0],
signal,
throwOnError: true,
});
return data;
},
queryKey: unmountVolumeQueryKey(options),
});
};
/**
* Unmount a volume
*/
export const unmountVolumeMutation = (
options?: Partial<Options<UnmountVolumeData>>,
): UseMutationOptions<UnmountVolumeResponse, DefaultError, Options<UnmountVolumeData>> => {
const mutationOptions: UseMutationOptions<UnmountVolumeResponse, DefaultError, Options<UnmountVolumeData>> = {
mutationFn: async (localOptions) => {
const { data } = await unmountVolume({
...options,
...localOptions,
throwOnError: true,
});
return data;
},
};
return mutationOptions;
};