From 6148ac2df9b522ab59f0756cc6e0ca86fcf007e4 Mon Sep 17 00:00:00 2001 From: bicochan Date: Wed, 16 Apr 2025 15:53:48 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AA=A8=EB=93=88=20API=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/register/[sequential]/page.tsx | 10 ++++ .../pages/module/api/authorization-service.ts | 20 ++++++++ apps/cs/src/pages/module/index.ts | 1 + .../module/model/authorizations-interface.ts | 7 +++ apps/cs/src/pages/module/ui/modify-page.tsx | 50 +++++++++++++++++++ 5 files changed, 88 insertions(+) create mode 100644 apps/cs/app/(with-base-layout)/module/register/[sequential]/page.tsx create mode 100644 apps/cs/src/pages/module/ui/modify-page.tsx diff --git a/apps/cs/app/(with-base-layout)/module/register/[sequential]/page.tsx b/apps/cs/app/(with-base-layout)/module/register/[sequential]/page.tsx new file mode 100644 index 000000000..9f1c32ff5 --- /dev/null +++ b/apps/cs/app/(with-base-layout)/module/register/[sequential]/page.tsx @@ -0,0 +1,10 @@ +import { ModifyPage as VModifyPage } from "@/pages/module"; + +export default async function ModifyPage({ + params, +}: { + params: Promise<{ sequential: string }>; +}) { + const { sequential } = await params; + return ; +} diff --git a/apps/cs/src/pages/module/api/authorization-service.ts b/apps/cs/src/pages/module/api/authorization-service.ts index 3e0621171..d68c6920a 100644 --- a/apps/cs/src/pages/module/api/authorization-service.ts +++ b/apps/cs/src/pages/module/api/authorization-service.ts @@ -19,6 +19,15 @@ export class AuthorizationsApiService implements AuthorizationsService { return response.data; } + public async getAuthorizationInfo( + authorizationNo: string, + ): Promise { + const response = await client.get( + `${ENDPOINT.USER_SERVICE.AUTHORIZATIONS}/${authorizationNo}`, + ); + return response.data; + } + public async createAuthorization( data: AuthorizationFormData, ): Promise { @@ -28,6 +37,17 @@ export class AuthorizationsApiService implements AuthorizationsService { ); return response.data; } + + public async updateAuthorization( + authorizationNo: string, + data: AuthorizationFormData, + ): Promise { + const response = await client.put( + `${ENDPOINT.USER_SERVICE.AUTHORIZATIONS}/${authorizationNo}`, + data, + ); + return response.data; + } } export const AuthorizationsApi = new AuthorizationsApiService(); diff --git a/apps/cs/src/pages/module/index.ts b/apps/cs/src/pages/module/index.ts index b1e8c3b32..fffbd617b 100644 --- a/apps/cs/src/pages/module/index.ts +++ b/apps/cs/src/pages/module/index.ts @@ -1,2 +1,3 @@ export { ModulePage } from "./ui/module-page"; export { CreatePage } from "./ui/create-page"; +export { ModifyPage } from "./ui/modify-page"; diff --git a/apps/cs/src/pages/module/model/authorizations-interface.ts b/apps/cs/src/pages/module/model/authorizations-interface.ts index 61cd849e2..114d5cb10 100644 --- a/apps/cs/src/pages/module/model/authorizations-interface.ts +++ b/apps/cs/src/pages/module/model/authorizations-interface.ts @@ -44,7 +44,14 @@ export interface AuthorizationsService { getAuthorizationsList: ( params: AuthorizationsParams, ) => Promise; + getAuthorizationInfo: ( + authorizationNo: string, + ) => Promise; createAuthorization: ( data: AuthorizationFormData, ) => Promise; + updateAuthorization: ( + authorizationNo: string, + data: AuthorizationFormData, + ) => Promise; } diff --git a/apps/cs/src/pages/module/ui/modify-page.tsx b/apps/cs/src/pages/module/ui/modify-page.tsx new file mode 100644 index 000000000..8eff7f0a8 --- /dev/null +++ b/apps/cs/src/pages/module/ui/modify-page.tsx @@ -0,0 +1,50 @@ +"use client"; + +import { useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useMutation, useQuery } from "@tanstack/react-query"; +import { useAlertStore } from "@/shared/lib/use-alert-store"; +import { ENDPOINT } from "@/shared/config"; +import { + authorizationFormSchema, + type AuthorizationFormData, +} from "../model/authorizations-interface"; +import { AuthorizationsApi } from "../api/authorization-service"; +import { ModuleForm } from "./module-form"; + +function ModifyPage({ sequential }: { sequential: string }) { + const { setMessage: alert } = useAlertStore((state) => state); + + const { data: authorizationInfo } = useQuery({ + queryKey: [ENDPOINT.USER_SERVICE.AUTHORIZATIONS, sequential], + queryFn: () => AuthorizationsApi.getAuthorizationInfo(sequential), + }); + + const { mutateAsync: updateAuthorization } = useMutation({ + mutationFn: (data: AuthorizationFormData) => + AuthorizationsApi.updateAuthorization(sequential, data), + onSuccess: () => { + alert("수정되었습니다."); + }, + }); + + const form = useForm({ + resolver: zodResolver(authorizationFormSchema), + values: authorizationInfo, + }); + + return ( +
+
+

모듈API 수정

+
+ +
+ ); +} + +export { ModifyPage };