mirror of
https://github.com/nicotsx/ironmount.git
synced 2025-12-10 12:10:51 +01:00
125 lines
2.7 KiB
TypeScript
125 lines
2.7 KiB
TypeScript
// This file is auto-generated by @hey-api/openapi-ts
|
|
|
|
import { type Options, listVolumes, createVolume } from "../sdk.gen";
|
|
import {
|
|
queryOptions,
|
|
type UseMutationOptions,
|
|
type DefaultError,
|
|
} from "@tanstack/react-query";
|
|
import type {
|
|
ListVolumesData,
|
|
CreateVolumeData,
|
|
CreateVolumeResponse,
|
|
} from "../types.gen";
|
|
import { client as _heyApiClient } from "../client.gen";
|
|
|
|
export type QueryKey<TOptions extends Options> = [
|
|
Pick<TOptions, "baseUrl" | "body" | "headers" | "path" | "query"> & {
|
|
_id: string;
|
|
_infinite?: boolean;
|
|
tags?: ReadonlyArray<string>;
|
|
},
|
|
];
|
|
|
|
const createQueryKey = <TOptions extends Options>(
|
|
id: string,
|
|
options?: TOptions,
|
|
infinite?: boolean,
|
|
tags?: ReadonlyArray<string>,
|
|
): [QueryKey<TOptions>[0]] => {
|
|
const params: QueryKey<TOptions>[0] = {
|
|
_id: id,
|
|
baseUrl:
|
|
options?.baseUrl ||
|
|
(options?.client ?? _heyApiClient).getConfig().baseUrl,
|
|
} as QueryKey<TOptions>[0];
|
|
if (infinite) {
|
|
params._infinite = infinite;
|
|
}
|
|
if (tags) {
|
|
params.tags = tags;
|
|
}
|
|
if (options?.body) {
|
|
params.body = options.body;
|
|
}
|
|
if (options?.headers) {
|
|
params.headers = options.headers;
|
|
}
|
|
if (options?.path) {
|
|
params.path = options.path;
|
|
}
|
|
if (options?.query) {
|
|
params.query = options.query;
|
|
}
|
|
return [params];
|
|
};
|
|
|
|
export const listVolumesQueryKey = (options?: Options<ListVolumesData>) =>
|
|
createQueryKey("listVolumes", options);
|
|
|
|
/**
|
|
* List all volumes
|
|
*/
|
|
export const listVolumesOptions = (options?: Options<ListVolumesData>) => {
|
|
return queryOptions({
|
|
queryFn: async ({ queryKey, signal }) => {
|
|
const { data } = await listVolumes({
|
|
...options,
|
|
...queryKey[0],
|
|
signal,
|
|
throwOnError: true,
|
|
});
|
|
return data;
|
|
},
|
|
queryKey: listVolumesQueryKey(options),
|
|
});
|
|
};
|
|
|
|
export const createVolumeQueryKey = (options?: Options<CreateVolumeData>) =>
|
|
createQueryKey("createVolume", options);
|
|
|
|
/**
|
|
* Create a new volume
|
|
*/
|
|
export const createVolumeOptions = (options?: Options<CreateVolumeData>) => {
|
|
return queryOptions({
|
|
queryFn: async ({ queryKey, signal }) => {
|
|
const { data } = await createVolume({
|
|
...options,
|
|
...queryKey[0],
|
|
signal,
|
|
throwOnError: true,
|
|
});
|
|
return data;
|
|
},
|
|
queryKey: createVolumeQueryKey(options),
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Create a new volume
|
|
*/
|
|
export const createVolumeMutation = (
|
|
options?: Partial<Options<CreateVolumeData>>,
|
|
): UseMutationOptions<
|
|
CreateVolumeResponse,
|
|
DefaultError,
|
|
Options<CreateVolumeData>
|
|
> => {
|
|
const mutationOptions: UseMutationOptions<
|
|
CreateVolumeResponse,
|
|
DefaultError,
|
|
Options<CreateVolumeData>
|
|
> = {
|
|
mutationFn: async (localOptions) => {
|
|
const { data } = await createVolume({
|
|
...options,
|
|
...localOptions,
|
|
throwOnError: true,
|
|
});
|
|
return data;
|
|
},
|
|
};
|
|
return mutationOptions;
|
|
};
|