using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using LinqToDB; using Volo.Abp.Domain.Entities; using Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp; namespace Win_in.Sfs.Wms.DataExchange.Dapper.Fawtyg.Tyrp.Bases; public abstract class Linq2DbCrudRepository : ILinq2DbRepository where TEntity : class, IEntity { protected readonly TyrpDb TyrpDb; public Linq2DbCrudRepository(TyrpDb tyrpDb) { TyrpDb = tyrpDb; } public virtual async Task InsertAsync(TEntity entity) { await TyrpDb.InsertAsync(entity).ConfigureAwait(false); } public virtual async Task UpdateAsync(TEntity entity) { await TyrpDb.UpdateAsync(entity).ConfigureAwait(false); } public virtual async Task DeleteAsync(TEntity entity) { await TyrpDb.DeleteAsync(entity).ConfigureAwait(false); } public virtual async Task FirstOrDefaultAsync(Expression> expression) { var parts = await GetListFromDbAsync(expression).ConfigureAwait(false); return parts[0]; } public virtual async Task> GetListAsync(Expression> expression = null) { var parts = await GetListFromDbAsync(expression).ConfigureAwait(false); return parts; } private async Task> GetListFromDbAsync(Expression> expression) { var parts = await TyrpDb.GetTable().WhereIf(expression != null, expression).ToListAsync().ConfigureAwait(false); return parts; } public virtual async Task CountAsync(Expression> expression) { return await TyrpDb.GetTable().CountAsync(expression).ConfigureAwait(false); } }