using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Bit.App.Abstractions; namespace Bit.App.Repositories { public abstract class Repository : BaseRepository, IRepository where TId : IEquatable where T : class, IDataObject, new() { public Repository(ISqlService sqlService) : base(sqlService) { } public virtual Task GetByIdAsync(TId id) { return Task.FromResult(Connection.Find(id)); } public virtual Task> GetAllAsync() { return Task.FromResult(Connection.Table().Cast()); } public virtual Task InsertAsync(T obj) { Connection.Insert(obj); return Task.FromResult(0); } public virtual Task UpdateAsync(T obj) { Connection.Update(obj); return Task.FromResult(0); } public virtual Task UpsertAsync(T obj) { Connection.InsertOrReplace(obj); return Task.FromResult(0); } public virtual async Task DeleteAsync(T obj) { await DeleteAsync(obj.Id); } public virtual Task DeleteAsync(TId id) { Connection.Delete(id); return Task.FromResult(0); } } }