package incheon.ags.mrb.share.service;

import incheon.ags.mrb.share.vo.RecipeShrnGroupVO;
import incheon.ags.mrb.share.web.dto.RecipeShrnGroupDTO;

import java.util.Map;

/**
 * 레시피 공유 그룹 서비스 인터페이스
 * - 레시피 공유 그룹 정보 관리
 */
public interface RecipeShrnGroupService {

    /**
     * 현재 사용자의 그룹 목록 조회 (멤버로 속한 그룹)
     * @param recipeShrnGroupVO 검색 조건 (userId 필수)
     * @return 그룹 목록과 페이징 정보 (list는 RecipeShrnGroupDTO)
     * @throws Exception
     */
    Map<String, Object> getMyGroupList(RecipeShrnGroupVO recipeShrnGroupVO) throws Exception;

    /**
     * 그룹 생성 (멤버 포함)
     * @param recipeShrnGroupDTO 그룹 정보 및 멤버 목록
     * @param userId 생성자 ID
     * @return 생성된 그룹 ID
     * @throws Exception
     */
    Integer createGroup(RecipeShrnGroupDTO recipeShrnGroupDTO, String userId) throws Exception;

    /**
     * 그룹 수정 (멤버 포함)
     * @param groupId 그룹 ID
     * @param recipeShrnGroupDTO 수정할 그룹 정보 및 멤버 목록
     * @param userId 수정자 ID
     * @throws Exception
     */
    void updateGroup(Integer groupId, RecipeShrnGroupDTO recipeShrnGroupDTO, String userId) throws Exception;

    /**
     * 그룹 삭제
     * @param groupId 그룹 ID
     * @throws Exception
     */
    void deleteGroup(Integer groupId) throws Exception;
}
