69 lines
1.7 KiB
TypeScript
69 lines
1.7 KiB
TypeScript
import { client } from "@/shared/api";
|
|
import { ENDPOINT } from "@/shared/config";
|
|
import {
|
|
postFormSchema,
|
|
postUpdateFormSchema,
|
|
type Post,
|
|
type PostInfo,
|
|
type PostList,
|
|
type PostParams,
|
|
type PostService,
|
|
type PostFormData,
|
|
type PostUpdateFormData,
|
|
} 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_USER}/${bbsId}`,
|
|
{ params },
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async getPostInfo(bbsId: number, pstNo: number): Promise<PostInfo> {
|
|
const response = await client.get<PostInfo>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS_USER}/${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_USER}`,
|
|
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_USER}/${bbsId}/${pstNo}`,
|
|
validatedData,
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async deletePost(
|
|
bbsId: number,
|
|
pstNo: number,
|
|
pstPswd?: string,
|
|
): Promise<void> {
|
|
await client.delete(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS_USER}/${bbsId}/${pstNo}`,
|
|
{ params: { pstPswd } },
|
|
);
|
|
}
|
|
}
|
|
|
|
export const PostApi = new PostApiService();
|