package incheon.ags.dss.regen.mapper;

import java.util.List;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import incheon.ags.dss.regen.vo.UrbMdlMstVO;

@Mapper
@incheon.com.config.annotation.MainDB
public interface UrbMdlMstMapper {

    /** 모델 배치 정보 등록 */
    void insertUrbMdlMst(UrbMdlMstVO vo) throws Exception;

    /** 모델 배치 정보 수정 */
    void updateUrbMdlMst(UrbMdlMstVO vo) throws Exception;

    /** 모델 배치 정보 삭제 */
    void deleteUrbMdlMst(UrbMdlMstVO vo) throws Exception;

    /** 모델 배치 정보 상세 조회 */
    UrbMdlMstVO selectUrbMdlMstDetail(UrbMdlMstVO vo) throws Exception;

    /** * 모델 배치 정보 목록 조회 
     * (구역 내 배치된 모든 모델을 조회)
     */
    List<UrbMdlMstVO> selectUrbMdlMstList(UrbMdlMstVO vo) throws Exception;

    /** 모델 배치 정보 목록 총 개수 */
    int selectUrbMdlMstListCnt(UrbMdlMstVO vo) throws Exception;
    
    /** 구역(Mst) 삭제 시, 해당 구역의 모든 배치 정보 삭제 */
    void deleteUrbMdlMstByZone(UrbMdlMstVO vo) throws Exception;
    
    // (참고: 자산(UserMdl, BcrnImg) 삭제 시 연관된 배치 정보 삭제는 
    //  각 자산 서비스에서 deleteUrbMdlMstByAssetId 쿼리를 호출해야 함)
    void deleteUrbMdlMstByUserMdl(int userMdlNo) throws Exception;
    void deleteUrbMdlMstByImg(int imgNo) throws Exception;
}