'use server'; import CommentListRequest from '@/dtos/request/forum/comment/commentListRequest'; import CommentListResponse from '@/dtos/response/forum/comment/commentListResponse'; import CommentCreateResponse from '@/dtos/response/forum/comment/commentCreateResponse'; import CommentUpdateResponse from '@/dtos/response/forum/comment/commentUpdateResponse'; import { ResultDto } from '@/dtos/response/common'; import { fetchJson } from '@/lib/utils/server'; // 댓글 목록 조회 export async function fetchCommentList(params: CommentListRequest): Promise> { const queryParams = new URLSearchParams(); queryParams.set('postID', String(params.postID)); queryParams.set('pageNum', String(params.page)); if (params.perPage) queryParams.set('perPage', String(params.perPage)); if (params.sort !== undefined) queryParams.set('sort', String(params.sort)); return await fetchJson(`/api/forum/comments?${queryParams.toString()}`, { method: 'GET', headers: {'Accept': 'application/json'} }); } // 댓글/답글 등록 export async function fetchCommentCreate(formData: FormData): Promise> { return await fetchJson('/api/forum/comments', { method: 'POST', headers: {'Accept': 'application/json'}, body: formData }); } // 댓글/답글 수정 export async function fetchCommentUpdate(commentID: number, formData: FormData): Promise> { return await fetchJson(`/api/forum/comments/${commentID}`, { method: 'PUT', headers: {'Accept': 'application/json'}, body: formData }); } // 댓글/답글 삭제 export async function fetchCommentDelete(commentID: number): Promise { return await fetchJson(`/api/forum/comments/${commentID}`, { method: 'DELETE', headers: {'Accept': 'application/json'} }); }