board.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use server';
  2. import {
  3. BoardPostsRequest,
  4. AllPostsRequest
  5. } from '@/types/request/forum/board';
  6. import {
  7. BoardResponse,
  8. BoardListResponse,
  9. BoardPostsResponse
  10. } from '@/types/response/forum/board';
  11. import { ResultDto } from '@/types/response/common';
  12. import { fetchJson } from '@/lib/utils/server';
  13. // 게시판 상세 조회
  14. export async function fetchBoard(boardCode: string): Promise<ResultDto<BoardResponse>>
  15. {
  16. return await fetchJson<BoardResponse>(`/api/forum/boards/${boardCode}`, {
  17. method: 'GET',
  18. headers: {
  19. 'Accept': 'application/json'
  20. }
  21. });
  22. }
  23. // 게시판 목록 조회
  24. export async function fetchBoardList(boardGroupCode?: string): Promise<ResultDto<BoardListResponse>>
  25. {
  26. const params = boardGroupCode ? `?boardGroupCode=${boardGroupCode}` : '';
  27. return await fetchJson<BoardListResponse>(`/api/forum/boards${params}`, {
  28. method: 'GET',
  29. headers: {
  30. 'Accept': 'application/json'
  31. }
  32. });
  33. }
  34. // 전체 게시글 조회
  35. export async function fetchAllPosts(params: AllPostsRequest): Promise<ResultDto<BoardPostsResponse>>
  36. {
  37. const queryParams = new URLSearchParams();
  38. queryParams.set('page', String(params.page));
  39. queryParams.set('perPage', String(params.perPage));
  40. if (params.sort !== undefined && params.sort !== null) queryParams.set('sort', String(params.sort));
  41. if (params.search !== undefined && params.search !== null) queryParams.set('search', String(params.search));
  42. if (params.keyword) queryParams.set('keyword', params.keyword);
  43. return await fetchJson<BoardPostsResponse>(`/api/forum/posts?${queryParams.toString()}`, {
  44. method: 'GET',
  45. headers: {
  46. 'Accept': 'application/json'
  47. }
  48. });
  49. }
  50. // 게시판 게시글 조회
  51. export async function fetchBoardPosts(params: BoardPostsRequest): Promise<ResultDto<BoardPostsResponse>>
  52. {
  53. const queryParams = new URLSearchParams();
  54. queryParams.set('boardID', String(params.boardID));
  55. queryParams.set('page', String(params.page));
  56. queryParams.set('perPage', String(params.perPage));
  57. queryParams.set('IsDeleted', "true");
  58. if (params.boardPrefixID) queryParams.set('boardPrefixID', String(params.boardPrefixID));
  59. if (params.sort !== undefined && params.sort !== null) queryParams.set('sort', String(params.sort));
  60. if (params.search !== undefined && params.search !== null) queryParams.set('search', String(params.search));
  61. if (params.keyword) queryParams.set('keyword', params.keyword);
  62. return await fetchJson<BoardPostsResponse>(`/api/forum/posts?${queryParams.toString()}`, {
  63. method: 'GET',
  64. headers: {
  65. 'Accept': 'application/json'
  66. }
  67. });
  68. }