diff --git a/src/app/(pages)/sign-in/page.tsx b/src/app/(pages)/sign-in/page.tsx index f242f55..8330233 100644 --- a/src/app/(pages)/sign-in/page.tsx +++ b/src/app/(pages)/sign-in/page.tsx @@ -2,7 +2,7 @@ import { SubmitHandler, useForm } from 'react-hook-form' -import { SignInRequest } from '@/types/api/auth.types' +import { SignInRequest } from '@/types/api/Auth.types' import { useSignInMutation } from 'queries/useSignIn' export default function LoginPage(): JSX.Element { diff --git a/src/app/(pages)/sign-up/page.tsx b/src/app/(pages)/sign-up/page.tsx index 779a4ea..284746d 100644 --- a/src/app/(pages)/sign-up/page.tsx +++ b/src/app/(pages)/sign-up/page.tsx @@ -3,7 +3,7 @@ // import { useRouter } from 'next/navigation' import { SubmitHandler, useForm } from 'react-hook-form' -import { SignUpRequest } from '@/types/api/auth.types' +import { SignUpRequest } from '@/types/api/Auth.types' import { useSignUpMutation } from 'queries/useSignUp' export default function SignUpPage(): JSX.Element { diff --git a/src/app/api/auth/sign-in/route.ts b/src/app/api/auth/sign-in/route.ts index d31d11b..a2df5dd 100644 --- a/src/app/api/auth/sign-in/route.ts +++ b/src/app/api/auth/sign-in/route.ts @@ -1,6 +1,6 @@ import { NextResponse } from 'next/server' -import { SignInRequest, SignInResponse } from '@/types/api/auth.types' +import { SignInRequest, SignInResponse } from '@/types/api/Auth.types' import { HTTPError } from 'ky' import { backendApi } from '@/services/api' diff --git a/src/services/auth/auth.ts b/src/services/auth/auth.ts index 5b90719..3f347f6 100644 --- a/src/services/auth/auth.ts +++ b/src/services/auth/auth.ts @@ -1,4 +1,4 @@ -import { SignInRequest, SignUpRequest } from '@/types/api/auth.types' +import { SignInRequest, SignUpRequest } from '@/types/api/Auth.types' import { backendApi, proxyApi } from '@/services/api' diff --git a/src/types/api/apiResponse.types.d.ts b/src/types/api/ApiResponse.types.d.ts similarity index 100% rename from src/types/api/apiResponse.types.d.ts rename to src/types/api/ApiResponse.types.d.ts diff --git a/src/types/api/apiSchema.types.d.ts b/src/types/api/ApiSchema.types.d.ts similarity index 97% rename from src/types/api/apiSchema.types.d.ts rename to src/types/api/ApiSchema.types.d.ts index 4ebf277..2fe5b09 100644 --- a/src/types/api/apiSchema.types.d.ts +++ b/src/types/api/ApiSchema.types.d.ts @@ -57,6 +57,23 @@ export interface paths { patch?: never trace?: never } + '/v1/my-page/check-nickname': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** 닉네임 중복 체크 */ + post: operations['checkNicknameDuplicate'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v1/likes': { parameters: { query?: never @@ -797,12 +814,6 @@ export interface components { * "태그4" * ] */ tags: string[] - /** - * @description 포트폴리오 이미지 url - * @default default_image_url - * @example 이미지url - */ - portImageUrl: string /** @description 포트폴리오 링크 리스트 */ links?: components['schemas']['LinkRequest'][] /** @description 포트폴리오 학력 리스트 */ @@ -1062,6 +1073,19 @@ export interface components { /** @description 경력 리스트 */ careers?: components['schemas']['CareerResponse'][] } + checkNicknameRequest: { + /** + * @description 회원 닉네임 + * @example new_nickname + */ + nickname: string + } + ApiResponseBoolean: { + isSuccess?: boolean + code?: string + message?: string + result?: boolean + } LikeRequest: { /** * Format: int64 @@ -1293,12 +1317,6 @@ export interface components { */ email: string } - ApiResponseBoolean: { - isSuccess?: boolean - code?: string - message?: string - result?: boolean - } ApiResponseString: { isSuccess?: boolean code?: string @@ -1317,11 +1335,6 @@ export interface components { * @example 뽀꼬 */ nickname?: string - /** - * @description 프로필 사진 url - * @example aaa.com - */ - imageUrl?: string /** * @description 소개문구 * @example 간단한 소개글을 작성해보세요! @@ -2131,6 +2144,34 @@ export interface operations { } } createPortfolio: { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + requestBody?: { + content: { + 'multipart/form-data': { + request: components['schemas']['PortfolioCreateRequest'] + /** Format: binary */ + portImage?: string + } + } + } + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ApiResponsePortCreateResponse'] + } + } + } + } + checkNicknameDuplicate: { parameters: { query?: never header?: never @@ -2139,7 +2180,7 @@ export interface operations { } requestBody: { content: { - 'application/json': components['schemas']['PortfolioCreateRequest'] + 'application/json': components['schemas']['checkNicknameRequest'] } } responses: { @@ -2149,7 +2190,7 @@ export interface operations { [name: string]: unknown } content: { - '*/*': components['schemas']['ApiResponsePortCreateResponse'] + '*/*': components['schemas']['ApiResponseBoolean'] } } } @@ -2457,9 +2498,13 @@ export interface operations { path?: never cookie?: never } - requestBody: { + requestBody?: { content: { - 'application/json': components['schemas']['ProfileUpdateRequest'] + 'multipart/form-data': { + request: components['schemas']['ProfileUpdateRequest'] + /** Format: binary */ + profileImage?: string + } } } responses: { @@ -2469,7 +2514,7 @@ export interface operations { [name: string]: unknown } content: { - '*/*': components['schemas']['ApiResponseProfileUpdateResponse'] + 'application/json': components['schemas']['ApiResponseProfileUpdateResponse'] } } } @@ -2483,7 +2528,7 @@ export interface operations { } requestBody: { content: { - 'application/json': components['schemas']['PasswordUpdateRequest'] + 'multipart/form-data': components['schemas']['PasswordUpdateRequest'] } } responses: { diff --git a/src/types/api/auth.types.d.ts b/src/types/api/Auth.types.d.ts similarity index 79% rename from src/types/api/auth.types.d.ts rename to src/types/api/Auth.types.d.ts index ec8235c..bcc7cc2 100644 --- a/src/types/api/auth.types.d.ts +++ b/src/types/api/Auth.types.d.ts @@ -52,20 +52,3 @@ export interface CheckEmailRequest { email: Email // 검사하고자 하는 이메일 } export type CheckEmailResponse = boolean - -/* -path: '/v1/my-page/password' -PATCH: 마이 페이지 비밀번호 수정 -*/ -export interface PasswordUpdateRequest { - password: Password // 새 비밀번호 -} - -/* -PasswordUpdateResponse -{ - "isSuccess": true, - "code": "COMMON200", - "message": "비밀번호 수정이 완료되었습니다." -} -*/ diff --git a/src/types/api/community.types.d.ts b/src/types/api/Community.types.d.ts similarity index 100% rename from src/types/api/community.types.d.ts rename to src/types/api/Community.types.d.ts diff --git a/src/types/api/global.types.d.ts b/src/types/api/Global.types.d.ts similarity index 91% rename from src/types/api/global.types.d.ts rename to src/types/api/Global.types.d.ts index a723f39..b22cd1d 100644 --- a/src/types/api/global.types.d.ts +++ b/src/types/api/Global.types.d.ts @@ -31,3 +31,9 @@ interface User { // MemberInfo: 일부 사용자 정보를 제외한 타입 type MemberInfo = Omit + +interface MultipartFormData { + request: T + /** Format: binary */ + file?: File +} diff --git a/src/types/api/profile.types.d.ts b/src/types/api/MyPage.types.d.ts similarity index 53% rename from src/types/api/profile.types.d.ts rename to src/types/api/MyPage.types.d.ts index 78ffddc..f3c3e0b 100644 --- a/src/types/api/profile.types.d.ts +++ b/src/types/api/MyPage.types.d.ts @@ -23,8 +23,44 @@ export interface GetProfileResponse extends ProfileBase, User { /* PATCH: 마이페이지 프로필 저장 */ -export type ProfileUpdateRequest = ProfileBase +export type ProfileUpdateRequest = MultipartFormData export interface ProfileUpdateResponse extends ProfileBase { completionRate?: number // 포트폴리오 완성률 (%) } + +/* +path: '/v1/my-page/check-nickname' +POST: 닉네임 중복 체크 +*/ +export interface CheckNicknameRequest { + nickname: Nickname // 닉네임 중복 검사 대상 +} + +export type CheckNicknameResponse = boolean + +/* +PasswordUpdateResponse +{ + "isSuccess": true, + "code": "COMMON200", + "message": "비밀번호 수정이 완료되었습니다." +} +*/ + +/* +path: '/v1/my-page/password' +PATCH: 마이 페이지 비밀번호 수정 +*/ +export interface PasswordUpdateRequest { + password: Password // 새 비밀번호 +} + +/* +PasswordUpdateResponse +{ + "isSuccess": true, + "code": "COMMON200", + "message": "비밀번호 수정이 완료되었습니다." +} +*/ diff --git a/src/types/api/portfolio.types.d.ts b/src/types/api/Portfolio.types.d.ts similarity index 95% rename from src/types/api/portfolio.types.d.ts rename to src/types/api/Portfolio.types.d.ts index 81f71b5..d0e7b6f 100644 --- a/src/types/api/portfolio.types.d.ts +++ b/src/types/api/Portfolio.types.d.ts @@ -96,8 +96,8 @@ export interface LanguageAwardRequest extends AwardRequestBase, LanguageAward { // 포트폴리오 리스트 조회 export type PortfolioListItem = PortfolioBase & PostBaseBody -// 포트폴리오 생성 요청 타입 -export interface PortfolioCreateRequest extends PortfolioBase { +// 포트폴리오 리스트 조회 +export interface PortfolioDetail extends PortfolioBase { portContent: string // 상세 내용 techStacks: TechStack[] // 사용 기술 스택 links?: PortfolioLink[] // 외부 링크 @@ -111,5 +111,8 @@ export interface PortfolioCreateRequest extends PortfolioBase { careers?: PortfolioCareer[] // 경력 리스트 } +// 포트폴리오 생성 요청 타입 +export type PortfolioCreateRequest = MultipartFormData + // 포트폴리오 생성 응답 타입 export type PortfolioCreateResponse = PortfolioCreateRequest & PostBaseBody diff --git a/src/types/api/post.types.d.ts b/src/types/api/Post.types.d.ts similarity index 100% rename from src/types/api/post.types.d.ts rename to src/types/api/Post.types.d.ts diff --git a/src/types/api/team.types.d.ts b/src/types/api/Team.types.d.ts similarity index 100% rename from src/types/api/team.types.d.ts rename to src/types/api/Team.types.d.ts diff --git a/src/types/api/svg.d.ts b/src/types/svg.d.ts similarity index 100% rename from src/types/api/svg.d.ts rename to src/types/svg.d.ts