using System.Data; using System.Linq.Expressions; namespace MicroORM.Interfaces; public interface IRepository { Task InsertAsync(T entity, IDbConnection? connection = null, IDbTransaction? transaction = null); Task UpdateAsync(T entity, IDbConnection? connection = null, IDbTransaction? transaction = null); Task GetByIdAsync(object id); Task> GetAllAsync(Expression>? filter = null, Expression>? orderBy = null, bool descending = false); Task DeleteAsync(object id); Task SaveAsync(T entity); Task> SaveAsyncList(IEnumerable entities); Task QuerySingleAsync(string sql, object? parameters = null); Task> QueryAsync(string sql, object? parameters = null); Task ExecuteScalarAsync(string sql, object? parameters = null); }