| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 'use server';
- import BoardResponse from '@/dtos/response/forum/board/boardResponse';
- import PostListRequest from '@/dtos/request/forum/board/postListRequest';
- import LatestPostsRequest from '@/dtos/request/forum/board/latestPostsRequest';
- import BoardListResponse from '@/dtos/response/forum/board/boardListResponse';
- import PostListResponse from '@/dtos/response/forum/board/postListResponse';
- import LatestPostsResponse from '@/dtos/response/forum/board/latestPostsResponse';
- import { ResultDto } from '@/dtos/response/common';
- import { fetchJson } from '@/lib/utils/server';
- // 게시판 상세 조회
- export async function fetchBoard(boardCode: string): Promise<ResultDto<BoardResponse>> {
- return await fetchJson<BoardResponse>(`/api/forum/boards/${boardCode}`, {
- method: 'GET',
- headers: {
- 'Accept': 'application/json'
- }
- });
- }
- // 게시판 목록 조회
- export async function fetchBoardList(boardGroupCode?: string): Promise<ResultDto<BoardListResponse[]>> {
- const params = boardGroupCode ? `?boardGroupID=${boardGroupCode}` : '';
- return await fetchJson<BoardListResponse[]>(`/api/forum/boards${params}`, {
- method: 'GET',
- headers: {
- 'Accept': 'application/json'
- }
- });
- }
- // 게시판 게시글 조회
- export async function fetchPostList(params: PostListRequest): Promise<ResultDto<PostListResponse>> {
- const queryParams = new URLSearchParams();
- queryParams.set('boardID', String(params.boardID));
- queryParams.set('pageNum', String(params.page));
- queryParams.set('perPage', String(params.perPage));
- if (params.boardPrefixID) queryParams.set('boardPrefixID', String(params.boardPrefixID));
- if (params.sort !== undefined && params.sort !== null) queryParams.set('sort', String(params.sort));
- if (params.search !== undefined && params.search !== null) queryParams.set('search', String(params.search));
- if (params.keyword) queryParams.set('keyword', params.keyword);
- return await fetchJson<PostListResponse>(`/api/forum/posts?${queryParams.toString()}`, {
- method: 'GET',
- headers: {
- 'Accept': 'application/json'
- }
- });
- }
- // 최근 게시글 조회
- export async function fetchLatestPosts(params: LatestPostsRequest): Promise<ResultDto<LatestPostsResponse>> {
- const queryParams = new URLSearchParams();
- queryParams.set('boardID', String(params.boardID));
- queryParams.set('pageNum', String(params.page));
- queryParams.set('perPage', String(params.perPage));
- return await fetchJson<LatestPostsResponse>(`/api/forum/posts?${queryParams.toString()}`, {
- method: 'GET',
- headers: {
- 'Accept': 'application/json'
- }
- });
- }
|