From ffa72ba9ebc78173de42d01d08f2805f0aac5301 Mon Sep 17 00:00:00 2001 From: keyy1315 Date: Fri, 2 May 2025 11:32:12 +0900 Subject: [PATCH] fix: Modify react query mutation function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - axiosInstance 함수 정의하지 않고 mutation function에 직접 사용하도록 변경 --- src/api/surveySales.ts | 8 +++--- src/app/api/survey-sales/[id]/route.ts | 1 + src/app/api/survey-sales/route.ts | 19 ++++++------- src/components/SurveySales.tsx | 14 +++++----- src/hooks/useSurvey.ts | 37 +++++++++++++++++--------- 5 files changed, 46 insertions(+), 33 deletions(-) diff --git a/src/api/surveySales.ts b/src/api/surveySales.ts index 57314da..1eac5d2 100644 --- a/src/api/surveySales.ts +++ b/src/api/surveySales.ts @@ -120,8 +120,8 @@ export const surveySalesApi = { throw error } }, - update: async (data: SurveySalesBasicInfo): Promise => { - const response = await axiosInstance.put(`/api/survey-sales`, data) - return response.data - }, + // update: async (data: SurveySalesBasicInfo): Promise => { + // const response = await axiosInstance.put(`/api/survey-sales`, data) + // return response.data + // }, } diff --git a/src/app/api/survey-sales/[id]/route.ts b/src/app/api/survey-sales/[id]/route.ts index bf5afe4..444157b 100644 --- a/src/app/api/survey-sales/[id]/route.ts +++ b/src/app/api/survey-sales/[id]/route.ts @@ -15,6 +15,7 @@ export async function POST(request: Request, context: { params: { id: string } } }) return NextResponse.json({ message: 'Survey detail created successfully' }) } + export async function GET(request: Request, context: { params: { id: string } }) { const { id } = await context.params // @ts-ignore diff --git a/src/app/api/survey-sales/route.ts b/src/app/api/survey-sales/route.ts index b460751..b93ff5e 100644 --- a/src/app/api/survey-sales/route.ts +++ b/src/app/api/survey-sales/route.ts @@ -17,18 +17,19 @@ export async function GET() { return NextResponse.json(res) } catch (error) { console.error(error) + throw error } } -export async function GET(request: Request) { - // @ts-ignore - const res = await prisma.SD_SERVEY_SALES_BASIC_INFO.findMany({ - include: { - detail_info: true, - }, - }) - return NextResponse.json(res) -} +// export async function GET(request: Request) { +// // @ts-ignore +// const res = await prisma.SD_SERVEY_SALES_BASIC_INFO.findMany({ +// include: { +// detail_info: true, +// }, +// }) +// return NextResponse.json(res) +// } export async function PUT(request: Request) { const body = await request.json() diff --git a/src/components/SurveySales.tsx b/src/components/SurveySales.tsx index f0dba94..59ca89f 100644 --- a/src/components/SurveySales.tsx +++ b/src/components/SurveySales.tsx @@ -43,12 +43,12 @@ export default function SurveySales() { enabled: isSearch, }) - const { mutate: updateSurveySales } = useMutation({ - mutationFn: surveySalesApi.update, - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['survey-sales', 'list'] }) - }, - }) + // const { mutate: updateSurveySales } = useMutation({ + // mutationFn: surveySalesApi.update, + // onSuccess: () => { + // queryClient.invalidateQueries({ queryKey: ['survey-sales', 'list'] }) + // }, + // }) const handleUpdateSurveySales = () => { const detailData: SurveySalesDetailInfo = { @@ -96,7 +96,7 @@ export default function SurveySales() { detail_info: { ...detailData }, } - updateSurveySales(surveySalesData) + // updateSurveySales(surveySalesData) } return ( diff --git a/src/hooks/useSurvey.ts b/src/hooks/useSurvey.ts index 45f1259..7e99341 100644 --- a/src/hooks/useSurvey.ts +++ b/src/hooks/useSurvey.ts @@ -1,4 +1,5 @@ import { SurveySalesBasicInfo, surveySalesApi, SurveySalesDetailInfo } from '@/api/surveySales' +import { axiosInstance } from '@/libs/axios' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' export function useServey(id?: number): { @@ -24,16 +25,20 @@ export function useServey(id?: number): { const { data: surveyDetail, isLoading: isLoadingSurveyDetail } = useQuery({ queryKey: ['survey', id], - queryFn: () => { + queryFn: async () => { if (id === undefined) throw new Error('id is required') if (id === null) return null - return surveySalesApi.getDetail(id) + const resp = await axiosInstance.get(`/api/survey-sales/${id}`) + return resp.data }, enabled: id !== undefined, }) const { mutateAsync: createSurvey, isPending: isCreatingSurvey } = useMutation({ - mutationFn: (survey: SurveySalesBasicInfo) => surveySalesApi.create(survey), + mutationFn: async (survey: SurveySalesBasicInfo) => { + const resp = await axiosInstance.post('/api/survey-sales', survey) + return resp.data.id ?? 0 + }, onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) return data @@ -41,9 +46,10 @@ export function useServey(id?: number): { }) const { mutate: updateSurvey, isPending: isUpdatingSurvey } = useMutation({ - mutationFn: (survey: SurveySalesBasicInfo) => { + mutationFn: async (survey: SurveySalesBasicInfo) => { if (id === undefined) throw new Error('id is required') - return surveySalesApi.update(id, survey) + const resp = await axiosInstance.put(`/api/survey-sales/${id}`, survey) + return resp.data }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['survey', id] }) @@ -52,27 +58,32 @@ export function useServey(id?: number): { }) const { mutateAsync: deleteSurvey, isPending: isDeletingSurvey } = useMutation({ - mutationFn: ({ id, isDetail }: { id: number; isDetail: boolean }) => { + mutationFn: async ({ id, isDetail }: { id: number; isDetail: boolean }) => { if (id === undefined) throw new Error('id is required') - return surveySalesApi.delete(id, isDetail) + const resp = await axiosInstance.delete(`/api/survey-sales/${id}`, { params: { isDetail } }) + return resp.data }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) }, }) - const { mutate: createSurveyDetail } = useMutation({ - mutationFn: ({ surveyId, surveyDetail }: { surveyId: number; surveyDetail: SurveySalesDetailInfo }) => - surveySalesApi.createDetail(surveyId, surveyDetail), + const { mutateAsync: createSurveyDetail, isPending: isCreatingSurveyDetail } = useMutation({ + mutationFn: async ({ surveyId, surveyDetail }: { surveyId: number; surveyDetail: SurveySalesDetailInfo }) => { + const resp = await axiosInstance.post(`/api/survey-sales/${surveyId}`, surveyDetail) + return resp.data + }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) + queryClient.invalidateQueries({ queryKey: ['survey', id] }) }, }) - const { mutate: confirmSurvey, isPending: isConfirmingSurvey } = useMutation({ - mutationFn: (id: number) => { + const { mutateAsync: confirmSurvey, isPending: isConfirmingSurvey } = useMutation({ + mutationFn: async (id: number) => { if (id === undefined) throw new Error('id is required') - return surveySalesApi.confirm(id) + const resp = await axiosInstance.patch(`/api/survey-sales/${id}`) + return resp.data }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['survey', 'list'] })