Files
nice-app-web/src/entities/user/api/use-user-create-mutation.ts
2025-10-25 22:05:43 +09:00

56 lines
1.5 KiB
TypeScript

import axios from 'axios';
import { API_URL_USER } from '@/shared/api/api-url-user';
import { NiceAxiosError } from '@/shared/@types/error';
import {
UserCreateParams,
UserCreateResponse
} from '../model/types';
interface UserCreateMutationResponse {
status: boolean;
data?: UserCreateResponse;
error?: {
root: string;
errKey: string;
code: string;
message: string;
timestamp: string;
details: Record<string, string>;
};
}
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const userCreate = async (params: UserCreateParams): Promise<UserCreateMutationResponse> => {
try {
const response = await axios.post<UserCreateResponse>(API_URL_USER.userCreate(), params);
return { status: true, data: response.data };
} catch (error: any) {
return {
status: false,
error: {
root: 'USER_CREATE',
errKey: error.response?.data?.errKey || 'UNKNOWN_ERROR',
code: error.response?.status?.toString() || '500',
message: error.response?.data?.message || error.message || 'Unknown error',
timestamp: new Date().toISOString(),
details: error.response?.data?.details || {}
}
};
}
};
export const useUserCreateMutation = (options?: UseMutationOptions<UserCreateMutationResponse, NiceAxiosError, UserCreateParams>) => {
const mutation = useMutation<UserCreateMutationResponse, NiceAxiosError, UserCreateParams>({
...options,
mutationFn: (params: UserCreateParams) => userCreate(params),
});
return {
...mutation,
};
};