board.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use server';
  2. import BoardResponse from '@/dtos/response/forum/board/boardResponse';
  3. import PostListRequest from '@/dtos/request/forum/board/postListRequest';
  4. import LatestPostsRequest from '@/dtos/request/forum/board/latestPostsRequest';
  5. import BoardListResponse from '@/dtos/response/forum/board/boardListResponse';
  6. import PostListResponse from '@/dtos/response/forum/board/postListResponse';
  7. import LatestPostsResponse from '@/dtos/response/forum/board/latestPostsResponse';
  8. import { ResultDto } from '@/dtos/response/common';
  9. import { fetchJson } from '@/lib/utils/server';
  10. // 게시판 상세 조회
  11. export async function fetchBoard(boardCode: string): Promise<ResultDto<BoardResponse>> {
  12. return await fetchJson<BoardResponse>(`/api/forum/board/${boardCode}`, {
  13. method: 'GET',
  14. headers: {
  15. 'Accept': 'application/json'
  16. }
  17. });
  18. }
  19. // 게시판 목록 조회
  20. export async function fetchBoardList(boardGroupCode: string): Promise<ResultDto<BoardListResponse[]>> {
  21. return await fetchJson<BoardListResponse[]>('/api/forum/board/list', {
  22. method: 'POST',
  23. headers: {
  24. 'Accept': 'application/json',
  25. 'Content-Type': 'application/json'
  26. },
  27. data: {
  28. boardGroupCode
  29. }
  30. });
  31. }
  32. // 게시판 게시글 조회
  33. export async function fetchPostList(params: PostListRequest): Promise<ResultDto<PostListResponse>> {
  34. return await fetchJson<PostListResponse>(`/api/forum/board/${params.boardCode}/posts`, {
  35. method: 'POST',
  36. headers: {
  37. 'Accept': 'application/json',
  38. 'Content-Type': 'application/json'
  39. },
  40. data: params
  41. });
  42. }
  43. // 최근 게시글 조회
  44. export async function fetchLatestPosts(params: LatestPostsRequest): Promise<ResultDto<LatestPostsResponse>> {
  45. return await fetchJson<LatestPostsResponse>(`/api/forum/board/${params.boardCode}/latest`, {
  46. method: 'POST',
  47. headers: {
  48. 'Accept': 'application/json',
  49. 'Content-Type': 'application/json'
  50. },
  51. data: params
  52. });
  53. }