package go.kr.project.common.mapper;

import go.kr.project.common.model.HtmlEditorFileVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * packageName    : go.kr.project.common.mapper
 * fileName       : HtmlEditorMapper
 * author         : 개발자
 * date           : 2025-05-23
 * description    : HTML 에디터 Mapper 인터페이스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2025-05-23        개발자       최초 생성
 */
@Mapper
public interface HtmlEditorMapper {

    /**
     * 파일 정보를 조회합니다.
     * 
     * @param fileId 파일 ID
     * @return 파일 정보
     */
    HtmlEditorFileVO selectHtmlEditorFile(String fileId);

    /**
     * 모듈에 첨부된 파일 목록을 조회합니다.
     * 
     * @param moduleId 모듈 ID
     * @return 파일 목록
     */
    List<HtmlEditorFileVO> selectHtmlEditorFileListByModuleId(String moduleId);

    /**
     * 파일 목록을 조회합니다.
     * 
     * @param vo 검색 조건을 담은 VO 객체
     * @return 파일 목록
     */
    List<HtmlEditorFileVO> selectHtmlEditorFileList(HtmlEditorFileVO vo);

    /**
     * 파일 목록의 총 개수를 조회합니다.
     * 
     * @param vo 검색 조건을 담은 VO 객체
     * @return 파일 목록의 총 개수
     */
    int selectHtmlEditorFileListTotalCount(HtmlEditorFileVO vo);

    /**
     * 파일 ID를 생성합니다.
     * 
     * @return HEDF00000001 형태의 파일 ID
     */
    String generateFileId();

    /**
     * 파일 정보를 등록합니다.
     * 
     * @param vo 등록할 파일 정보를 담은 VO 객체
     * @return 등록된 행의 수
     */
    int insertHtmlEditorFile(HtmlEditorFileVO vo);

    /**
     * 파일 정보를 수정합니다.
     * 
     * @param vo 수정할 파일 정보를 담은 VO 객체
     * @return 수정된 행의 수
     */
    int updateHtmlEditorFile(HtmlEditorFileVO vo);

    /**
     * 파일 정보를 삭제합니다.
     * 
     * @param fileId 파일 ID
     * @return 삭제된 행의 수
     */
    int deleteHtmlEditorFile(String fileId);

    /**
     * 모듈에 첨부된 파일 정보를 삭제합니다.
     * 
     * @param moduleId 모듈 ID
     * @return 삭제된 행의 수
     */
    int deleteHtmlEditorFileByModuleId(String moduleId);
}