11import { axiosClient } from '../../../shared/types/api/http-client' ;
2- import { EventNormalResponse , EventDetailResponse } from '../model/eventResponse' ;
3- import { EventTag , EventCategory , PaginationParams } from '../model/eventMeta' ;
4- import { EventCreate , EventUpdate } from '../model/eventRequest' ;
5- import { EventResponse } from '../model/eventResponse' ;
6- import { EventItem } from '../model/event' ;
72import { EventDetailRequest } from '../model/event' ;
3+ import { CategoryType , TagType } from '../../../shared/types/baseEventType' ;
4+ import { ApiResponse } from '../../../shared/types/api/apiResponse' ;
5+ import { EventItem , PaginationParams } from '../model/event' ;
86
97export const eventDetail = async ( dto : EventDetailRequest ) => {
108 const response = await axiosClient . get ( `/events/${ dto . eventId } ` ) ;
119 return response . data ;
1210} ;
1311
1412// 이벤트 검색 (기본 정보)
15- export const searchEvents = async ( keyword : string , { page, size } : PaginationParams ) : Promise < EventNormalResponse > => {
13+ export const searchEvents = async ( keyword : string , { page, size } : PaginationParams ) : Promise < ApiResponse < EventItem [ ] > > => {
1614 const params = new URLSearchParams ( ) ;
1715
1816 params . append ( 'keyword' , keyword ) ;
1917 params . append ( 'page' , page . toString ( ) ) ;
2018 params . append ( 'size' , size . toString ( ) ) ;
2119
22- const response = await axiosClient . get < EventNormalResponse > (
23- `/events/search?keyword=${ params . toString ( ) } `
24- ) ;
20+ const response = await axiosClient . get < ApiResponse < EventItem [ ] > > ( `/events/search?keyword=${ params . toString ( ) } ` ) ;
21+
2522 return response . data ;
2623} ;
2724
@@ -30,54 +27,39 @@ export const getAllEventsInfinite = async ({
3027 page,
3128 size,
3229 tag,
33- } : PaginationParams & { tag ?: EventTag } ) : Promise < { items : EventItem [ ] ; hasNextPage : boolean } > => {
34- const response = await axiosClient . get < EventNormalResponse > (
30+ } : PaginationParams & { tag ?: TagType } ) : Promise < { items : EventItem [ ] ; hasNextPage : boolean } > => {
31+ const response = await axiosClient . get < ApiResponse < EventItem [ ] > > (
3532 `/events${ tag ? `?tags=${ tag } ` : '' } ${ tag ? '&' : '?' } page=${ page } &size=${ size } `
3633 ) ;
3734
35+ // ApiResponse의 result는 옵셔널 -> result?: T
36+ const items = response . data . result ?? [ ] ;
37+
3838 return {
39- items : response . data . result ,
40- hasNextPage : response . data . result . length === size ,
39+ items,
40+ hasNextPage : items . length === size ,
4141 } ;
4242} ;
4343
4444// 태그별 이벤트 목록 조회 (최신, 인기, 마감 / 기본 정보)
45- export const getEventByTag = async ( tag : EventTag , { page, size } : PaginationParams ) : Promise < EventNormalResponse > => {
46- const response = await axiosClient . get < EventNormalResponse > ( `/events?tags=${ tag } &page=${ page } &size=${ size } ` ) ;
47- return response . data ;
45+ export const getEventByTag = async ( tag : TagType , { page, size } : PaginationParams ) : Promise < EventItem [ ] > => {
46+ const response = await axiosClient . get < { result : EventItem [ ] } > ( `/events?tags=${ tag } &page=${ page } &size=${ size } ` ) ;
47+ return response . data . result || [ ] ;
4848} ;
4949
5050// 카테고리별 이벤트 목록 조회 (개발, 네트워킹, 해커톤, 컨퍼런스)
5151export const getEventByCategory = async (
52- category : EventCategory ,
52+ category : CategoryType ,
5353 { page, size } : PaginationParams
54- ) : Promise < EventNormalResponse > => {
55- const response = await axiosClient . get < EventNormalResponse > (
54+ ) : Promise < EventItem [ ] > => {
55+ const response = await axiosClient . get < EventItem [ ] > (
5656 `/events/category?category=${ category } &page=${ page } &size=${ size } `
5757 ) ;
5858 return response . data ;
5959} ;
6060
61- // 이벤트 상세 조회 (기본 정보 + 상세 정보)
62- export const getEventById = async ( eventId : number ) : Promise < EventDetailResponse > => {
63- const response = await axiosClient . get < EventDetailResponse > ( `/events/${ eventId } ` ) ;
64- return response . data ;
65- } ;
66-
67- // 이벤트 생성 (POST)
68- export const createEvent = async ( eventData : EventCreate ) : Promise < EventResponse < string > > => {
69- const response = await axiosClient . post < EventResponse < string > > ( `/events` , eventData ) ;
70- return response . data ;
71- } ;
72-
73- // 이벤트 수정 (PUT)
74- export const updateEvent = async ( eventId : number , eventData : EventUpdate ) : Promise < EventResponse < string > > => {
75- const response = await axiosClient . put < EventResponse < string > > ( `/events/${ eventId } ` , eventData ) ;
76- return response . data ;
77- } ;
78-
7961// 이벤트 삭제 (DELETE)
80- export const deleteEvent = async ( eventId : number ) : Promise < EventResponse < string > > => {
81- const response = await axiosClient . delete < EventResponse < string > > ( `/events/${ eventId } ` ) ;
62+ export const deleteEvent = async ( eventId : number ) : Promise < ApiResponse < string > > => {
63+ const response = await axiosClient . delete < ApiResponse < string > > ( `/events/${ eventId } ` ) ;
8264 return response . data ;
8365} ;
0 commit comments