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 throw error
} }
}, },
update: async (data: SurveySalesBasicInfo): Promise<SurveySalesBasicInfo> => { // update: async (data: SurveySalesBasicInfo): Promise<SurveySalesBasicInfo> => {
const response = await axiosInstance.put<SurveySalesBasicInfo>(`/api/survey-sales`, data) // const response = await axiosInstance.put<SurveySalesBasicInfo>(`/api/survey-sales`, data)
return response.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' }) return NextResponse.json({ message: 'Survey detail created successfully' })
} }
export async function GET(request: Request, context: { params: { id: string } }) { export async function GET(request: Request, context: { params: { id: string } }) {
const { id } = await context.params const { id } = await context.params
// @ts-ignore // @ts-ignore

View File

@ -17,18 +17,19 @@ export async function GET() {
return NextResponse.json(res) return NextResponse.json(res)
} catch (error) { } catch (error) {
console.error(error) console.error(error)
throw error
} }
} }
export async function GET(request: Request) { // export async function GET(request: Request) {
// @ts-ignore // // @ts-ignore
const res = await prisma.SD_SERVEY_SALES_BASIC_INFO.findMany({ // const res = await prisma.SD_SERVEY_SALES_BASIC_INFO.findMany({
include: { // include: {
detail_info: true, // detail_info: true,
}, // },
}) // })
return NextResponse.json(res) // return NextResponse.json(res)
} // }
export async function PUT(request: Request) { export async function PUT(request: Request) {
const body = await request.json() const body = await request.json()

View File

@ -43,12 +43,12 @@ export default function SurveySales() {
enabled: isSearch, enabled: isSearch,
}) })
const { mutate: updateSurveySales } = useMutation({ // const { mutate: updateSurveySales } = useMutation({
mutationFn: surveySalesApi.update, // mutationFn: surveySalesApi.update,
onSuccess: () => { // onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['survey-sales', 'list'] }) // queryClient.invalidateQueries({ queryKey: ['survey-sales', 'list'] })
}, // },
}) // })
const handleUpdateSurveySales = () => { const handleUpdateSurveySales = () => {
const detailData: SurveySalesDetailInfo = { const detailData: SurveySalesDetailInfo = {
@ -96,7 +96,7 @@ export default function SurveySales() {
detail_info: { ...detailData }, detail_info: { ...detailData },
} }
updateSurveySales(surveySalesData) // updateSurveySales(surveySalesData)
} }
return ( return (

View File

@ -1,4 +1,5 @@
import { SurveySalesBasicInfo, surveySalesApi, SurveySalesDetailInfo } from '@/api/surveySales' import { SurveySalesBasicInfo, surveySalesApi, SurveySalesDetailInfo } from '@/api/surveySales'
import { axiosInstance } from '@/libs/axios'
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
export function useServey(id?: number): { export function useServey(id?: number): {
@ -24,16 +25,20 @@ export function useServey(id?: number): {
const { data: surveyDetail, isLoading: isLoadingSurveyDetail } = useQuery({ const { data: surveyDetail, isLoading: isLoadingSurveyDetail } = useQuery({
queryKey: ['survey', id], queryKey: ['survey', id],
queryFn: () => { queryFn: async () => {
if (id === undefined) throw new Error('id is required') if (id === undefined) throw new Error('id is required')
if (id === null) return null 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, enabled: id !== undefined,
}) })
const { mutateAsync: createSurvey, isPending: isCreatingSurvey } = useMutation({ 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) => { onSuccess: (data) => {
queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) queryClient.invalidateQueries({ queryKey: ['survey', 'list'] })
return data return data
@ -41,9 +46,10 @@ export function useServey(id?: number): {
}) })
const { mutate: updateSurvey, isPending: isUpdatingSurvey } = useMutation({ const { mutate: updateSurvey, isPending: isUpdatingSurvey } = useMutation({
mutationFn: (survey: SurveySalesBasicInfo) => { mutationFn: async (survey: SurveySalesBasicInfo) => {
if (id === undefined) throw new Error('id is required') 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: () => { onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['survey', id] }) queryClient.invalidateQueries({ queryKey: ['survey', id] })
@ -52,27 +58,32 @@ export function useServey(id?: number): {
}) })
const { mutateAsync: deleteSurvey, isPending: isDeletingSurvey } = useMutation({ 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') 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: () => { onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) queryClient.invalidateQueries({ queryKey: ['survey', 'list'] })
}, },
}) })
const { mutate: createSurveyDetail } = useMutation({ const { mutateAsync: createSurveyDetail, isPending: isCreatingSurveyDetail } = useMutation({
mutationFn: ({ surveyId, surveyDetail }: { surveyId: number; surveyDetail: SurveySalesDetailInfo }) => mutationFn: async ({ surveyId, surveyDetail }: { surveyId: number; surveyDetail: SurveySalesDetailInfo }) => {
surveySalesApi.createDetail(surveyId, surveyDetail), const resp = await axiosInstance.post<SurveySalesDetailInfo>(`/api/survey-sales/${surveyId}`, surveyDetail)
return resp.data
},
onSuccess: () => { onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) queryClient.invalidateQueries({ queryKey: ['survey', 'list'] })
queryClient.invalidateQueries({ queryKey: ['survey', id] })
}, },
}) })
const { mutate: confirmSurvey, isPending: isConfirmingSurvey } = useMutation({ const { mutateAsync: confirmSurvey, isPending: isConfirmingSurvey } = useMutation({
mutationFn: (id: number) => { mutationFn: async (id: number) => {
if (id === undefined) throw new Error('id is required') 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: () => { onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) queryClient.invalidateQueries({ queryKey: ['survey', 'list'] })