diff options
| author | transtrike <transtrike@gmail.com> | 2021-01-21 22:08:50 +0200 |
|---|---|---|
| committer | transtrike <transtrike@gmail.com> | 2021-01-21 22:08:50 +0200 |
| commit | bda98b96433d7a9952524fab4ec65f96998b55de (patch) | |
| tree | 59f8d2bf63b03bacc76f98114d2aed78e420ddcd /src/DevHive.Data/Repositories/BaseRepository.cs | |
| parent | fb527cbfb94e2723113d67b83ed8f24e32422e56 (diff) | |
| download | DevHive-bda98b96433d7a9952524fab4ec65f96998b55de.tar DevHive-bda98b96433d7a9952524fab4ec65f96998b55de.tar.gz DevHive-bda98b96433d7a9952524fab4ec65f96998b55de.zip | |
Generic base repo class refactored; All repos inherit generic base repo
Diffstat (limited to 'src/DevHive.Data/Repositories/BaseRepository.cs')
| -rw-r--r-- | src/DevHive.Data/Repositories/BaseRepository.cs | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/src/DevHive.Data/Repositories/BaseRepository.cs b/src/DevHive.Data/Repositories/BaseRepository.cs index b0f0f3e..dabb35b 100644 --- a/src/DevHive.Data/Repositories/BaseRepository.cs +++ b/src/DevHive.Data/Repositories/BaseRepository.cs @@ -1,11 +1,61 @@ +using System; using System.Threading.Tasks; +using DevHive.Data.Repositories.Interfaces; using Microsoft.EntityFrameworkCore; namespace DevHive.Data.Repositories { - public class BaseRepository + public class BaseRepository<TEntity> : IRepository<TEntity> + where TEntity : class { - public async Task<bool> SaveChangesAsync(DbContext context) + private readonly DbContext _context; + + public BaseRepository(DbContext context) + { + this._context = context; + this._context.ChangeTracker.AutoDetectChangesEnabled = false; + } + + public virtual async Task<bool> AddAsync(TEntity entity) + { + await this._context + .Set<TEntity>() + .AddAsync(entity); + + return await this.SaveChangesAsync(_context); + } + + public virtual async Task<TEntity> GetByIdAsync(Guid id) + { + return await this._context + .Set<TEntity>() + .FindAsync(id); + } + + public virtual async Task<bool> EditAsync(TEntity newEntity) + { + // Old way(backup) + // User user = await this._context.Users + // .FirstOrDefaultAsync(x => x.Id == entity.Id); + + // this._context.Update(user); + // this._context.Entry(entity).CurrentValues.SetValues(entity); + + this._context + .Set<TEntity>() + .Update(newEntity); + + return await this.SaveChangesAsync(_context); + } + + public virtual async Task<bool> DeleteAsync(TEntity entity) + { + this._context.Remove(entity); + + return await this.SaveChangesAsync(_context); + } + + public virtual async Task<bool> SaveChangesAsync(DbContext context) { int result = await context.SaveChangesAsync(); |
