feat: implement method handler for survey sales API
- 보안정책으로 인해 delete, patch, put 메소드 post 메소드로 래핑하여 처리
This commit is contained in:
parent
1248ec0c95
commit
d19ef7efc7
@ -59,6 +59,28 @@ async function getSurveySaleDetail(request: NextRequest): Promise<NextResponse>
|
|||||||
return NextResponse.json(result)
|
return NextResponse.json(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {NextRequest} request - body에 method 키 필요 { method: 'PUT' | 'DELETE' | 'PATCH' }
|
||||||
|
* @description PUT, DELETE, PATCH 요청 처리 함수
|
||||||
|
*
|
||||||
|
* @returns {NextResponse}
|
||||||
|
*/
|
||||||
|
async function methodHandler(request: NextRequest): Promise<NextResponse> {
|
||||||
|
const id = request.nextUrl.pathname.split('/').pop() ?? ''
|
||||||
|
const body = await request.json()
|
||||||
|
|
||||||
|
switch (body.method) {
|
||||||
|
case 'PUT':
|
||||||
|
return updateSurveySaleDetail(id, body)
|
||||||
|
case 'DELETE':
|
||||||
|
return deleteSurveySaleDetail(id)
|
||||||
|
case 'PATCH':
|
||||||
|
return submitSurveySaleDetail(id, body)
|
||||||
|
default:
|
||||||
|
return NextResponse.json({ error: 'Invalid method' }, { status: HttpStatusCode.BadRequest })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {PUT} /api/survey-sales/:id 조사 매물 수정 API
|
* @api {PUT} /api/survey-sales/:id 조사 매물 수정 API
|
||||||
* @apiName PUT /api/survey-sales/:id
|
* @apiName PUT /api/survey-sales/:id
|
||||||
@ -92,9 +114,7 @@ async function getSurveySaleDetail(request: NextRequest): Promise<NextResponse>
|
|||||||
* ...
|
* ...
|
||||||
* }
|
* }
|
||||||
* */
|
* */
|
||||||
async function updateSurveySaleDetail(request: NextRequest): Promise<NextResponse> {
|
async function updateSurveySaleDetail(id: string, body: any): Promise<NextResponse> {
|
||||||
const id = request.nextUrl.pathname.split('/').pop() ?? ''
|
|
||||||
const body = await request.json()
|
|
||||||
const service = new SurveySalesService({})
|
const service = new SurveySalesService({})
|
||||||
|
|
||||||
const result = await service.tryFunction(() => service.updateSurvey(Number(id), body.survey, body.isTemporary, body.storeId, body.role))
|
const result = await service.tryFunction(() => service.updateSurvey(Number(id), body.survey, body.isTemporary, body.storeId, body.role))
|
||||||
@ -122,8 +142,7 @@ async function updateSurveySaleDetail(request: NextRequest): Promise<NextRespons
|
|||||||
* {
|
* {
|
||||||
* "message": "success"
|
* "message": "success"
|
||||||
*/
|
*/
|
||||||
async function deleteSurveySaleDetail(request: NextRequest): Promise<NextResponse> {
|
async function deleteSurveySaleDetail(id: string): Promise<NextResponse> {
|
||||||
const id = request.nextUrl.pathname.split('/').pop() ?? ''
|
|
||||||
const service = new SurveySalesService({})
|
const service = new SurveySalesService({})
|
||||||
const result = await service.tryFunction(() => service.deleteSurvey(Number(id)))
|
const result = await service.tryFunction(() => service.deleteSurvey(Number(id)))
|
||||||
if (result instanceof ApiError) {
|
if (result instanceof ApiError) {
|
||||||
@ -167,9 +186,7 @@ async function deleteSurveySaleDetail(request: NextRequest): Promise<NextRespons
|
|||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
async function submitSurveySaleDetail(request: NextRequest): Promise<NextResponse> {
|
async function submitSurveySaleDetail(id: string, body: any): Promise<NextResponse> {
|
||||||
const id = request.nextUrl.pathname.split('/').pop() ?? ''
|
|
||||||
const body = await request.json()
|
|
||||||
const service = new SurveySalesService({})
|
const service = new SurveySalesService({})
|
||||||
|
|
||||||
const result = await service.tryFunction(() => service.submitSurvey(Number(id), body.targetId, body.targetNm))
|
const result = await service.tryFunction(() => service.submitSurvey(Number(id), body.targetId, body.targetNm))
|
||||||
@ -180,6 +197,4 @@ async function submitSurveySaleDetail(request: NextRequest): Promise<NextRespons
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const GET = loggerWrapper(getSurveySaleDetail)
|
export const GET = loggerWrapper(getSurveySaleDetail)
|
||||||
export const PUT = loggerWrapper(updateSurveySaleDetail)
|
export const POST = loggerWrapper(methodHandler)
|
||||||
export const DELETE = loggerWrapper(deleteSurveySaleDetail)
|
|
||||||
export const PATCH = loggerWrapper(submitSurveySaleDetail)
|
|
||||||
|
|||||||
@ -276,7 +276,8 @@ export function useSurvey(
|
|||||||
const { mutate: updateSurvey, isPending: isUpdatingSurvey } = useMutation({
|
const { mutate: updateSurvey, isPending: isUpdatingSurvey } = useMutation({
|
||||||
mutationFn: async ({ survey, isTemporary, storeId }: { survey: SurveyRegistRequest; isTemporary: boolean; storeId?: string | null }) => {
|
mutationFn: async ({ survey, isTemporary, storeId }: { survey: SurveyRegistRequest; isTemporary: boolean; storeId?: string | null }) => {
|
||||||
if (id === undefined) throw new Error()
|
if (id === undefined) throw new Error()
|
||||||
const resp = await axiosInstance(null).put<SurveyRegistRequest>(`/api/survey-sales/${id}`, {
|
const resp = await axiosInstance(null).post<SurveyRegistRequest>(`/api/survey-sales/${id}`, {
|
||||||
|
method: 'PUT',
|
||||||
survey: survey,
|
survey: survey,
|
||||||
isTemporary: isTemporary,
|
isTemporary: isTemporary,
|
||||||
storeId: storeId,
|
storeId: storeId,
|
||||||
@ -306,7 +307,9 @@ export function useSurvey(
|
|||||||
const { mutateAsync: deleteSurvey, isPending: isDeletingSurvey } = useMutation({
|
const { mutateAsync: deleteSurvey, isPending: isDeletingSurvey } = useMutation({
|
||||||
mutationFn: async () => {
|
mutationFn: async () => {
|
||||||
if (id === null) throw new Error()
|
if (id === null) throw new Error()
|
||||||
const resp = await axiosInstance(null).delete<boolean>(`/api/survey-sales/${id}`)
|
const resp = await axiosInstance(null).post<boolean>(`/api/survey-sales/${id}`, {
|
||||||
|
method: 'DELETE',
|
||||||
|
})
|
||||||
return resp.data
|
return resp.data
|
||||||
},
|
},
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
@ -329,7 +332,8 @@ export function useSurvey(
|
|||||||
const { mutateAsync: submitSurvey, isPending: isSubmittingSurvey } = useMutation({
|
const { mutateAsync: submitSurvey, isPending: isSubmittingSurvey } = useMutation({
|
||||||
mutationFn: async ({ targetId, targetNm }: { targetId?: string | null; targetNm?: string | null }) => {
|
mutationFn: async ({ targetId, targetNm }: { targetId?: string | null; targetNm?: string | null }) => {
|
||||||
if (!id) throw new Error()
|
if (!id) throw new Error()
|
||||||
const resp = await axiosInstance(null).patch<boolean>(`/api/survey-sales/${id}`, {
|
const resp = await axiosInstance(null).post<boolean>(`/api/survey-sales/${id}`, {
|
||||||
|
method: 'PATCH',
|
||||||
targetId,
|
targetId,
|
||||||
targetNm,
|
targetNm,
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user