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

31 lines
818 B
C#

using MongoDB.Bson;
using System.Linq.Expressions;
using Modules.Library.Domain.Entities;
namespace Modules.Library.Database.Repositories;
internal interface IRepository<T> : IRepository<T, Guid> where T : Entity { }
internal 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<TKey> AddAsync(T entity);
Task<bool> UpdateAsync(T entity);
Task<bool> DeleteAsync(T entity);
}