package cn.iocoder.byzs.module.bjdx.dal.mysql.coursetype;

import java.util.*;

import cn.iocoder.byzs.module.bjdx.controller.admin.coursetype.vo.CourseTypeListReqVO;
import cn.iocoder.byzs.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.byzs.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.byzs.module.bjdx.dal.dataobject.coursetype.CourseTypeDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.byzs.module.bjdx.controller.admin.coursetype.vo.*;

/**
 * 课程-类型 Mapper
 *
 * @author lyb
 */
@Mapper
public interface CourseTypeMapper extends BaseMapperX<CourseTypeDO> {

    default List<CourseTypeDO> selectList(CourseTypeListReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<CourseTypeDO>()
                .likeIfPresent(CourseTypeDO::getCtType, reqVO.getCtType())
                .eqIfPresent(CourseTypeDO::getCtParentId, reqVO.getCtParentId())
                .eqIfPresent(CourseTypeDO::getCtTypeNode, reqVO.getCtTypeNode())
                .likeIfPresent(CourseTypeDO::getCtTypeDescribe, reqVO.getCtTypeDescribe())
                .orderByAsc(CourseTypeDO::getCtTypeSort));
    }

	default CourseTypeDO selectByCtParentIdAndCtType(Long ctParentId, String ctType) {
	    return selectOne(CourseTypeDO::getCtParentId, ctParentId, CourseTypeDO::getCtType, ctType);
	}

    default Long selectCountByCtParentId(Long ctParentId) {
        return selectCount(CourseTypeDO::getCtParentId, ctParentId);
    }

}