using Microsoft.EntityFrameworkCore; using SessionCompanion.Database.Tables; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace SessionCompanion.Database.Repositories.Base { public class Repository : IRepository where T : BaseEntity { protected ApplicationDbContext RepositoryContext { get; set; } public Repository(ApplicationDbContext repositoryContext) { this.RepositoryContext = repositoryContext; } public IQueryable Get() { return this.RepositoryContext.Set(); } public IQueryable Get(Expression> expression) { return this.RepositoryContext.Set().Where(expression); } public Task Any(Expression> expression) { return RepositoryContext.Set().AnyAsync(expression); } public Task Any(int id) { return RepositoryContext.Set().AnyAsync(n => n.Id == id); } public async Task Get(int id) { return await RepositoryContext.Set().FindAsync(id); } public virtual Task Create(T entity) { return Task.FromResult(RepositoryContext.Set().AddAsync(entity)); } public virtual Task Update(T entity) { return Task.FromResult(RepositoryContext.Set().Update(entity)); } public virtual void Delete(T entity) { this.RepositoryContext.Set().Remove(entity); } public virtual async Task Save() { await RepositoryContext.SaveChangesAsync(); } public void Dispose() { RepositoryContext.Dispose(); } } }