98 lines
2.6 KiB
TypeScript
98 lines
2.6 KiB
TypeScript
import { client } from "@/shared/api";
|
|
import { ENDPOINT } from "@/shared/config";
|
|
import {
|
|
postFormSchema,
|
|
postUpdateFormSchema,
|
|
type Post,
|
|
type MovePost,
|
|
type DeletePost,
|
|
type PostInfo,
|
|
type PostList,
|
|
type RecentPostList,
|
|
type PostParams,
|
|
type RecentPostParams,
|
|
type PostFormData,
|
|
type PostUpdateFormData,
|
|
type PostService,
|
|
} from "../model/post-interface";
|
|
|
|
export class PostApiService implements PostService {
|
|
public async getPostList(
|
|
bbsId: number,
|
|
params: PostParams,
|
|
): Promise<PostList> {
|
|
const response = await client.get<PostList>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS}/${bbsId}`,
|
|
{ params },
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async getRecentPostList(
|
|
params?: RecentPostParams,
|
|
): Promise<RecentPostList> {
|
|
const response = await client.get<RecentPostList>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS}/recentPosts`,
|
|
{ params },
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async getPostInfo(bbsId: number, pstNo: number): Promise<PostInfo> {
|
|
const response = await client.get<PostInfo>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS}/${bbsId}/${pstNo}`,
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async createPost(data: PostFormData): Promise<Post> {
|
|
const validatedData = postFormSchema.parse(data);
|
|
const response = await client.post<Post>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS}`,
|
|
validatedData,
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async updatePost(
|
|
bbsId: number,
|
|
pstNo: number,
|
|
data: PostUpdateFormData,
|
|
): Promise<Post> {
|
|
const validatedData = postUpdateFormSchema.parse(data);
|
|
const response = await client.put<Post>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS}/${bbsId}/${pstNo}`,
|
|
validatedData,
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async deletePost(
|
|
bbsId: number,
|
|
pstNo: number,
|
|
delRsn?: string,
|
|
): Promise<void> {
|
|
await client.delete(`${ENDPOINT.BOARD_SERVICE.POSTS}/${bbsId}/${pstNo}`, {
|
|
params: { delRsn },
|
|
});
|
|
}
|
|
|
|
public async softDeletePost(data: DeletePost[]): Promise<void> {
|
|
await client.post(`${ENDPOINT.BOARD_SERVICE.POSTS}/softDeleteSels`, data);
|
|
}
|
|
|
|
public async hardDeletePost(data: DeletePost[]): Promise<void> {
|
|
await client.post(`${ENDPOINT.BOARD_SERVICE.POSTS}/hardDeleteSels`, data);
|
|
}
|
|
|
|
public async movePost(data: MovePost[]): Promise<void> {
|
|
await client.post(`${ENDPOINT.BOARD_SERVICE.POSTS}/movePstByBbsId`, data);
|
|
}
|
|
|
|
public async restorePost(data: DeletePost[]): Promise<void> {
|
|
await client.post(`${ENDPOINT.BOARD_SERVICE.POSTS}/restoreSels`, data);
|
|
}
|
|
}
|
|
|
|
export const PostApi = new PostApiService();
|