Skip to content
Snippets Groups Projects
Select Git revision
  • 48a22a1863ea31f1dcf0dd02636536e2256fa16b
  • master default protected
  • css2
  • css
4 results

Nav.vue

Blame
  • meeting.js 3.47 KiB
    // 기본 API URL
    const BASE_URL = process.env.REACT_APP_BASE_URL;
    
    /**
     * 모든 미팅 불러오기
     * @param {number} page - 페이지 번호 (기본값: 0)
     * @param {number} size - 페이지 크기 (기본값: 20)
     * @returns {Promise<Object>} - 미팅 데이터
     */
    export const getAllMeetings = async (page = 0, size = 20) => {
      const response = await fetch(
        `${BASE_URL}/api/meeting?page=${page}&size=${size}`,
        {
          method: "GET",
        }
      );
    
      if (!response.ok) {
        throw new Error("Failed to fetch meetings");
      }
    
      return (await response.json()).data;
    };
    
    /**
     * 모임 상세 조회
     * @param {number} meetingId - 조회할 모임 ID
     * @returns {Promise<Object>} - 모임 상세 데이터
     */
    export const getMeetingDetails = async (meetingId) => {
      const response = await fetch(`${BASE_URL}/api/meeting/${meetingId}`, {
        method: "GET",
      });
    
      if (!response.ok) {
        throw new Error("Failed to fetch meeting details");
      }
    
      return (await response.json()).data;
    };
    
    /**
     * 미팅 생성
     * @param {Object} meetingData - 미팅 생성에 필요한 데이터
     * @returns {Promise<Object>} - 생성된 미팅 데이터
     */
    export const createMeeting = async (meetingData) => {
      const response = await fetch(`${BASE_URL}/api/meeting`, {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
        },
        body: JSON.stringify(meetingData),
      });
    
      if (!response.ok) {
        throw new Error("Failed to create meeting");
      }
    
      return await response.json();
    };
    
    /**
     * 미팅 참가하기
     * @param {number} meetingId - 참가할 미팅 ID
     * @returns {Promise<Object>} - 참가 결과 메시지
     */
    export const joinMeeting = async (meetingId) => {
      const response = await fetch(`${BASE_URL}/api/meeting/${meetingId}/join`, {
        method: "POST",
      });
    
      if (!response.ok) {
        throw new Error("Failed to join meeting");
      }
    
      return await response.json();
    };
    
    /**
     * 내가 참가한 미팅 불러오기
     * @param {number} page - 페이지 번호 (기본값: 0)
     * @param {number} size - 페이지 크기 (기본값: 20)
     * @returns {Promise<Object>} - 참가한 미팅 데이터
     */
    export const getMyMeetings = async (page = 0, size = 20) => {
      const response = await fetch(
        `${BASE_URL}/api/meeting/my?page=${page}&size=${size}`,
        {
          method: "GET",
        }
      );
    
      if (!response.ok) {
        throw new Error("Failed to fetch my meetings");
      }
    
      return (await response.json()).data;
    };
    
    /**
     * 모임 탈퇴
     * @param {number} meetingId - 탈퇴할 모임 ID
     * @returns {Promise<Object>} - 탈퇴 결과 메시지
     */
    export const leaveMeeting = async (meetingId) => {
      const response = await fetch(`${BASE_URL}/api/meeting/${meetingId}/leave`, {
        method: "POST",
      });
    
      if (!response.ok) {
        throw new Error("Failed to leave meeting");
      }
    
      return await response.json();
    };
    
    /**
     * 모임 마감
     * @param {number} meetingId - 마감할 모임 ID
     * @returns {Promise<Object>} - 마감 결과 메시지 및 업데이트된 모임 데이터
     */
    export const closeMeeting = async (meetingId) => {
      const response = await fetch(`${BASE_URL}/api/meeting/${meetingId}/close`, {
        method: "PUT",
      });
    
      if (!response.ok) {
        throw new Error("Failed to close meeting");
      }
    
      return await response.json();
    };
    
    export const deleteMeeting = async (meetingId) => {
      const response = await fetch(`${BASE_URL}/api/meeting/${meetingId}`, {
        method: "DELETE",
      });
    
      if (!response.ok) {
        throw new Error("Failed to delete meeting");
      }
    
      return await response.json();
    };