package dao;

import pojo.CourseInfo;

import java.util.ArrayList;

public interface CourseDB {
    /**
     * 用于列出全部课程
     * @return 返回从数据库中查询到的全部课程
     */
    ArrayList<CourseInfo> getAllCourseInfo();

    /**
     * 用于分页列出筛选课程
     * @param page 页码
     * @param pageSize 每页条数
     * @param keyword 关键词筛选，为空字符串表示不筛选
     * @param type 类型筛选，为0表示不筛选
     * @return 返回从数据库查询到的该页课程
     */
    ArrayList<CourseInfo> getCourseInfos(int page, int pageSize, String keyword, int type);

    /**
     * 用于获取一个课程
     * @param id 目标课程的id
     * @return 根据id从数据库查询到的课程信息
     */
    CourseInfo getCourseInfoByID(int id);

    /**
     * 用于获取课程总数
     * @return 返回数据库中课程信息条数
     */
    int getAllCourseInfoCount();

    /**
     * 获取一个课程筛选结果集的总数
     * @param keyword 关键词筛选，为空字符串表示不筛选
     * @param type 类型筛选，为0表示不筛选
     * @return 课程筛选结果集的总数
     */
    int getAllCourseInfoCount(String keyword, int type);

    /**
     * 用于添加课程
     * @param courseInfo 要添加的课程
     * @return 影响数据库行数，行数大于0则说明添加成功
     */
    int addCourseInfo(CourseInfo courseInfo);

    /**
     * 用于更新一个课程信息
     * @param courseInfo 修改的课程信息，id不可修改，id作为修改目标查找参数
     * @return 影响的行数，行数大于0则说明更新成功
     */
    int updateCourseInfo(CourseInfo courseInfo);

    /**
     * 用于删除一个课程
     * @param id 要删除的课程的id
     * @return 影响的行数，行数大于0则说明更新成功
     */
    int deleteCourseInfo(int id);
}
