fix: Modify react query mutation function

- axiosInstance 함수 정의하지 않고 mutation function에 직접 사용하도록 변경
This commit is contained in:
Dayoung 2025-05-02 11:32:12 +09:00
parent 9185b5cb7a
commit ffa72ba9eb
5 changed files with 46 additions and 33 deletions

View File

@ -120,8 +120,8 @@ export const surveySalesApi = {
throw error
}
},
update: async (data: SurveySalesBasicInfo): Promise<SurveySalesBasicInfo> => {
const response = await axiosInstance.put<SurveySalesBasicInfo>(`/api/survey-sales`, data)
return response.data
},
// update: async (data: SurveySalesBasicInfo): Promise<SurveySalesBasicInfo> => {
// const response = await axiosInstance.put<SurveySalesBasicInfo>(`/api/survey-sales`, data)
// return response.data
// },
}

View File

@ -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

View File

@ -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()

View File

@ -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 (

View File

@ -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<SurveySalesBasicInfo>(`/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<SurveySalesBasicInfo>('/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<SurveySalesBasicInfo>(`/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<boolean>(`/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<SurveySalesDetailInfo>(`/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<boolean>(`/api/survey-sales/${id}`)
return resp.data
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['survey', 'list'] })