using QYZH.InteractiveMagazine.Models.Dto;
using System.Linq.Expressions;
namespace QYZH.InteractiveMagazine.Repository;
///
/// 基础仓储接口
///
/// 实体类型
public interface IBaseRepository where T : class, new()
{
///
/// 根据Id获取实体
///
/// 主键Id
/// 实体对象
Task GetByIdAsync(long id);
///
/// 获取所有列表
///
/// 实体列表
Task> GetListAsync();
///
/// 根据条件获取列表
///
/// 查询条件
/// 实体列表
Task> GetListByWhereAsync(Expression> where);
///
/// 分页查询
///
/// 查询条件
/// 分页参数
/// 分页结果
Task> GetPageListAsync(Expression> where, PageQueryModel pageQuery);
///
/// 插入单条记录
///
/// 实体对象
/// 是否成功
Task InsertAsync(T entity);
///
/// 批量插入记录
///
/// 实体列表
/// 是否成功
Task InsertRangeAsync(List entities);
///
/// 更新单条记录
///
/// 实体对象
/// 是否成功
Task UpdateAsync(T entity);
///
/// 批量更新记录
///
/// 实体列表
/// 是否成功
Task UpdateRangeAsync(List entities);
///
/// 根据Id删除记录(软删除)
///
/// 主键Id
/// 是否成功
Task DeleteByIdAsync(long id);
///
/// 根据条件删除记录(软删除)
///
/// 删除条件
/// 是否成功
Task DeleteByWhereAsync(Expression> where);
///
/// 根据条件获取记录数
///
/// 查询条件
/// 记录数
Task GetCountAsync(Expression> where);
}