MyBookmark/Modules.Library.Domain/Gateways/IRepository.cs
2024-09-04 23:08:56 +03:00

36 lines
1006 B
C#

using Modules.Library.Domain.Entities;
using System.Linq.Expressions;
namespace Modules.Library.Domain.Gateways;
public interface IRepository<T, TKey>
{
Task<List<T>> GetAllAsync();
Task<T> GetByIdAsync(TKey id);
Task<T?> GetByIdOrDefaultAsync(TKey id);
Task<List<T>> GetRangeByIdsAsync(List<TKey> ids);
Task<T> GetFirstWhere(Expression<Func<T, bool>> predicate);
Task<T?> GetFirstOrDefaultWhere(Expression<Func<T, bool>> predicate);
Task<List<T>> GetWhere(Expression<Func<T, bool>> predicate);
Task<bool> AnyWhere(Expression<Func<T, bool>> predicate);
/*
Task AddAsync(T entity, IUser user);
Task<bool> UpdateAsync(T entity, IUser user);
Task<bool> DeleteAsync(T entity, IUser user);
*/
Task<TKey> AddAsync(T entity);
Task<bool> UpdateAsync(T entity);
Task<bool> DeleteAsync(T entity);
}
public interface IRepository<T> : IRepository<T, Guid> where T : Entity { }
//public interface IRepository<T> : IRepository<T, string> { }