Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 174 additions & 0 deletions src/apis/Admin/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
import { axiosInstance } from "@/utils/axiosInstance";

export interface VerifyLanguageTestResponse {
id: number;
languageTestType: string;
languageTestScore: string;
verifyStatus: string;
rejectedReason: null;
}

export type VerifyLanguageTestRequest = Record<string, never>;

export interface LanguageTestListResponseSort {
sorted: boolean;
unsorted: boolean;
empty: boolean;
}

export interface LanguageTestListResponsePageable {
pageNumber: number;
pageSize: number;
sort: LanguageTestListResponsePageableSort;
offset: number;
paged: boolean;
unpaged: boolean;
}

export interface LanguageTestListResponsePageableSort {
sorted: boolean;
unsorted: boolean;
empty: boolean;
}

export interface LanguageTestListResponseContentItem {
languageTestScoreStatusResponse: LanguageTestListResponseContentItemLanguageTestScoreStatusResponse;
siteUserResponse: LanguageTestListResponseContentItemSiteUserResponse;
}

export interface LanguageTestListResponseContentItemSiteUserResponse {
id: number;
nickname: string;
profileImageUrl: string;
}

export interface LanguageTestListResponseContentItemLanguageTestScoreStatusResponse {
id: number;
languageTestResponse: LanguageTestListResponseContentItemLanguageTestScoreStatusResponseLanguageTestResponse;
verifyStatus: string;
rejectedReason: null;
createdAt: string;
updatedAt: string;
}

export interface LanguageTestListResponseContentItemLanguageTestScoreStatusResponseLanguageTestResponse {
languageTestType: string;
languageTestScore: string;
languageTestReportUrl: string;
}

export interface LanguageTestListResponse {
content: LanguageTestListResponseContentItem[];
pageable: LanguageTestListResponsePageable;
totalElements: number;
totalPages: number;
last: boolean;
size: number;
number: number;
sort: LanguageTestListResponseSort;
numberOfElements: number;
first: boolean;
empty: boolean;
}

export interface VerifyGpaResponse {
id: number;
gpa: number;
gpaCriteria: number;
verifyStatus: string;
rejectedReason: null;
}

export type VerifyGpaRequest = Record<string, never>;

export interface GpaListResponseSort {
sorted: boolean;
unsorted: boolean;
empty: boolean;
}

export interface GpaListResponsePageable {
pageNumber: number;
pageSize: number;
sort: GpaListResponsePageableSort;
offset: number;
paged: boolean;
unpaged: boolean;
}

export interface GpaListResponsePageableSort {
sorted: boolean;
unsorted: boolean;
empty: boolean;
}

export interface GpaListResponseContentItem {
gpaScoreStatusResponse: GpaListResponseContentItemGpaScoreStatusResponse;
siteUserResponse: GpaListResponseContentItemSiteUserResponse;
}

export interface GpaListResponseContentItemSiteUserResponse {
id: number;
nickname: string;
profileImageUrl: string;
}

export interface GpaListResponseContentItemGpaScoreStatusResponse {
id: number;
gpaResponse: GpaListResponseContentItemGpaScoreStatusResponseGpaResponse;
verifyStatus: string;
rejectedReason: null;
createdAt: string;
updatedAt: string;
}

export interface GpaListResponseContentItemGpaScoreStatusResponseGpaResponse {
gpa: number;
gpaCriteria: number;
gpaReportUrl: string;
}

export interface GpaListResponse {
content: GpaListResponseContentItem[];
pageable: GpaListResponsePageable;
totalElements: number;
totalPages: number;
last: boolean;
size: number;
number: number;
sort: GpaListResponseSort;
numberOfElements: number;
first: boolean;
empty: boolean;
}

export const adminApi = {
putVerifyLanguageTest: async (params: { languageTestScoreId: string | number, data?: VerifyLanguageTestRequest }): Promise<VerifyLanguageTestResponse> => {
const res = await axiosInstance.put<VerifyLanguageTestResponse>(
`/admin/scores/language-tests/${params.languageTestScoreId}`, params?.data
);
return res.data;
},

getLanguageTestList: async (params: { params?: Record<string, any> }): Promise<LanguageTestListResponse> => {
const res = await axiosInstance.get<LanguageTestListResponse>(
`/admin/scores/language-tests?page=1&size=10`, { params: params?.params }
);
return res.data;
},

putVerifyGpa: async (params: { gpaScoreId: string | number, data?: VerifyGpaRequest }): Promise<VerifyGpaResponse> => {
const res = await axiosInstance.put<VerifyGpaResponse>(
`/admin/scores/gpas/${params.gpaScoreId}`, params?.data
);
return res.data;
},

getGpaList: async (params: { params?: Record<string, any> }): Promise<GpaListResponse> => {
const res = await axiosInstance.get<GpaListResponse>(
`/admin/scores/gpas`, { params: params?.params }
);
return res.data;
},

};
13 changes: 13 additions & 0 deletions src/apis/Admin/getGpaList.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { AxiosError } from "axios";
import { useQuery } from "@tanstack/react-query";
import { adminApi, GpaListResponse } from "./api";
import { QueryKeys } from "../queryKeys";

const useGetGpaList = (params?: Record<string, any>) => {
return useQuery<GpaListResponse, AxiosError>({
queryKey: [QueryKeys.Admin.gpaList, params],
queryFn: () => adminApi.getGpaList(params ? { params } : {}),
});
};

export default useGetGpaList;
13 changes: 13 additions & 0 deletions src/apis/Admin/getLanguageTestList.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { AxiosError } from "axios";
import { useQuery } from "@tanstack/react-query";
import { adminApi, LanguageTestListResponse } from "./api";
import { QueryKeys } from "../queryKeys";

const useGetLanguageTestList = (params?: Record<string, any>) => {
return useQuery<LanguageTestListResponse, AxiosError>({
queryKey: [QueryKeys.Admin.languageTestList, params],
queryFn: () => adminApi.getLanguageTestList(params ? { params } : {}),
});
};

export default useGetLanguageTestList;
5 changes: 5 additions & 0 deletions src/apis/Admin/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export { default as api } from './api';
export { default as getGpaList } from './getGpaList';
export { default as getLanguageTestList } from './getLanguageTestList';
export { default as putVerifyGpa } from './putVerifyGpa';
export { default as putVerifyLanguageTest } from './putVerifyLanguageTest';
11 changes: 11 additions & 0 deletions src/apis/Admin/putVerifyGpa.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { AxiosError } from "axios";
import { useMutation } from "@tanstack/react-query";
import { adminApi, VerifyGpaResponse, VerifyGpaRequest } from "./api";

const usePutVerifyGpa = () => {
return useMutation<VerifyGpaResponse, AxiosError, { gpaScoreId: string | number; data: VerifyGpaRequest }>({
mutationFn: (variables) => adminApi.putVerifyGpa(variables),
});
};

export default usePutVerifyGpa;
11 changes: 11 additions & 0 deletions src/apis/Admin/putVerifyLanguageTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { AxiosError } from "axios";
import { useMutation } from "@tanstack/react-query";
import { adminApi, VerifyLanguageTestResponse, VerifyLanguageTestRequest } from "./api";

const usePutVerifyLanguageTest = () => {
return useMutation<VerifyLanguageTestResponse, AxiosError, { languageTestScoreId: string | number; data: VerifyLanguageTestRequest }>({
mutationFn: (variables) => adminApi.putVerifyLanguageTest(variables),
});
};

export default usePutVerifyLanguageTest;
112 changes: 112 additions & 0 deletions src/apis/Auth/api.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { axiosInstance } from "@/utils/axiosInstance";

export type SignOutResponse = Record<string, never>;

export type SignOutRequest = Record<string, never>;

export interface AppleAuthResponse {
isRegistered: boolean;
nickname: null;
email: string;
profileImageUrl: null;
signUpToken: string;
}

export type AppleAuthRequest = Record<string, never>;

export interface RefreshTokenResponse {
accessToken: string;
}

export type RefreshTokenRequest = Record<string, never>;

export interface EmailLoginResponse {
accessToken: string;
refreshToken: string;
}

export type EmailLoginRequest = Record<string, never>;

export interface EmailVerificationResponse {
signUpToken: string;
}

export type EmailVerificationRequest = Record<string, never>;

export interface KakaoAuthResponse {
isRegistered: boolean;
nickname: string;
email: string;
profileImageUrl: string;
signUpToken: string;
}

export type KakaoAuthRequest = Record<string, never>;

export type AccountResponse = void;

export interface SignUpResponse {
accessToken: string;
refreshToken: string;
}

export type SignUpRequest = Record<string, never>;

export const authApi = {
postSignOut: async (params: { data?: SignOutRequest }): Promise<SignOutResponse> => {
const res = await axiosInstance.post<SignOutResponse>(
`/auth/sign-out`, params?.data
);
return res.data;
},

postAppleAuth: async (params: { data?: AppleAuthRequest }): Promise<AppleAuthResponse> => {
const res = await axiosInstance.post<AppleAuthResponse>(
`/auth/apple`, params?.data
);
return res.data;
},

postRefreshToken: async (params: { data?: RefreshTokenRequest }): Promise<RefreshTokenResponse> => {
const res = await axiosInstance.post<RefreshTokenResponse>(
`/auth/reissue`, params?.data
);
return res.data;
},

postEmailLogin: async (params: { data?: EmailLoginRequest }): Promise<EmailLoginResponse> => {
const res = await axiosInstance.post<EmailLoginResponse>(
`/auth/email/sign-in`, params?.data
);
return res.data;
},

postEmailVerification: async (params: { data?: EmailVerificationRequest }): Promise<EmailVerificationResponse> => {
const res = await axiosInstance.post<EmailVerificationResponse>(
`/auth/email/sign-up`, params?.data
);
return res.data;
},

postKakaoAuth: async (params: { data?: KakaoAuthRequest }): Promise<KakaoAuthResponse> => {
const res = await axiosInstance.post<KakaoAuthResponse>(
`/auth/kakao`, params?.data
);
return res.data;
},

deleteAccount: async (): Promise<AccountResponse> => {
const res = await axiosInstance.delete<AccountResponse>(
`/auth/quit`
);
return res.data;
},

postSignUp: async (params: { data?: SignUpRequest }): Promise<SignUpResponse> => {
const res = await axiosInstance.post<SignUpResponse>(
`/auth/sign-up`, params?.data
);
return res.data;
},

};
11 changes: 11 additions & 0 deletions src/apis/Auth/deleteAccount.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { AxiosError } from "axios";
import { useMutation } from "@tanstack/react-query";
import { authApi, AccountResponse, AccountRequest } from "./api";

const useDeleteAccount = () => {
return useMutation<AccountResponse, AxiosError, AccountRequest>({
mutationFn: (data) => authApi.deleteAccount({ data }),
});
};

export default useDeleteAccount;
9 changes: 9 additions & 0 deletions src/apis/Auth/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export { default as api } from './api';
export { default as deleteAccount } from './deleteAccount';
export { default as postAppleAuth } from './postAppleAuth';
export { default as postEmailLogin } from './postEmailLogin';
export { default as postEmailVerification } from './postEmailVerification';
export { default as postKakaoAuth } from './postKakaoAuth';
export { default as postRefreshToken } from './postRefreshToken';
export { default as postSignOut } from './postSignOut';
export { default as postSignUp } from './postSignUp';
11 changes: 11 additions & 0 deletions src/apis/Auth/postAppleAuth.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { AxiosError } from "axios";
import { useMutation } from "@tanstack/react-query";
import { authApi, AppleAuthResponse, AppleAuthRequest } from "./api";

const usePostAppleAuth = () => {
return useMutation<AppleAuthResponse, AxiosError, AppleAuthRequest>({
mutationFn: (data) => authApi.postAppleAuth({ data }),
});
};

export default usePostAppleAuth;
Loading