61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { client } from "@/shared/api";
|
|
import { ENDPOINT } from "@/shared/config";
|
|
import {
|
|
commentFormSchema,
|
|
commentUpdateFormSchema,
|
|
type Comment,
|
|
type CommentService,
|
|
type CommentList,
|
|
type CommentParams,
|
|
type CommentFormData,
|
|
type CommentUpdateFormData,
|
|
} from "../model/comment-interface";
|
|
|
|
export class CommentApiService implements CommentService {
|
|
public async getComments(params: CommentParams): Promise<CommentList> {
|
|
const response = await client.get<CommentList>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS_COMMENTS}`,
|
|
{ params },
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async createComment(data: CommentFormData): Promise<Comment> {
|
|
const validatedData = commentFormSchema.parse(data);
|
|
const response = await client.post<Comment>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS_COMMENTS}`,
|
|
validatedData,
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async updateComment(
|
|
bbsId: number,
|
|
pstNo: number,
|
|
cmntNo: number,
|
|
data: CommentUpdateFormData,
|
|
): Promise<Comment> {
|
|
const validatedData = commentUpdateFormSchema.parse(data);
|
|
const response = await client.put<Comment>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS_COMMENTS}/${bbsId}/${pstNo}/${cmntNo}`,
|
|
validatedData,
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
public async deleteComment(
|
|
bbsId: number,
|
|
pstNo: number,
|
|
cmntNo: number,
|
|
cmntPswd: string,
|
|
): Promise<Comment> {
|
|
const response = await client.delete<Comment>(
|
|
`${ENDPOINT.BOARD_SERVICE.POSTS_COMMENTS}/${bbsId}/${pstNo}/${cmntNo}`,
|
|
{ params: { cmntPswd } },
|
|
);
|
|
return response.data;
|
|
}
|
|
}
|
|
|
|
export const CommentApi = new CommentApiService();
|