using System.Linq.Expressions;
namespace F9WebAiTest.Domain.Common;
/// 通用仓储接口
public interface IRepository where T : IEntity
{
Task GetByIdAsync(long id);
Task> GetAllAsync();
Task> FindAsync(Expression> predicate);
Task FirstOrDefaultAsync(Expression> predicate);
Task AnyAsync(Expression> predicate);
Task CountAsync(Expression> predicate);
Task AddAsync(T entity);
Task AddRangeAsync(IEnumerable entities);
Task UpdateAsync(T entity);
Task DeleteAsync(T entity);
Task DeleteRangeAsync(IEnumerable entities);
// 物理删除(不软删除,用于关联表避免唯一索引冲突)
Task HardDeleteAsync(T entity);
Task HardDeleteRangeAsync(IEnumerable entities);
Task SaveChangesAsync();
}