using MongoDB.Driver;
using MongoDbGenericRepository.ViewModels;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MongoDbGenericRepository
{
public interface IMongoDbRepository
{
///
/// A generic GetOne method
///
///
///
///
Task> GetOne(string id) where TEntity : class, new();
///
/// A generic GetOne method
///
///
///
///
Task> GetOne(FilterDefinition filter) where TEntity : class, new();
///
/// A generic get many method
///
///
///
///
Task> GetMany(IEnumerable ids) where TEntity : class, new();
///
/// A generic get many method with filter
///
///
///
///
Task> GetMany(FilterDefinition filter) where TEntity : class, new();
///
/// GetMany with filter and projection
///
///
///
/// A cursor for the query
IFindFluent FindCursor(FilterDefinition filter) where TEntity : class, new();
///
/// A generic get all method
///
///
///
Task> GetAll() where TEntity : class, new();
///
/// A generic Exists method
///
///
///
///
Task Exists(string id) where TEntity : class, new();
///
/// A generic count method
///
///
///
///
Task Count(string id) where TEntity : class, new();
///
/// A generic count method
///
///
///
///
Task Count(FilterDefinition filter) where TEntity : class, new();
///
/// A generic Add One method
///
///
///
///
Task AddOne(TEntity item) where TEntity : class, new();
///
/// A generic delete one method
///
///
///
///
Task DeleteOne(string id) where TEntity : class, new();
///
/// A generic delete many method
///
///
///
///
Task DeleteMany(IEnumerable ids) where TEntity : class, new();
#region Update
///
/// UpdateOne by id
///
///
///
///
///
Task UpdateOne(string id, UpdateDefinition update) where TEntity : class, new();
///
/// UpdateOne with filter
///
///
///
///
///
Task UpdateOne(FilterDefinition filter, UpdateDefinition update) where TEntity : class, new();
///
/// UpdateMany with Ids
///
///
///
///
///
Task UpdateMany(IEnumerable ids, UpdateDefinition update) where TEntity : class, new();
///
/// UpdateMany with filter
///
///
///
///
///
Task UpdateMany(FilterDefinition filter, UpdateDefinition update) where TEntity : class, new();
#endregion Update
#region Find And Update
///
/// GetAndUpdateOne with filter
///
///
///
///
///
///
Task> GetAndUpdateOne(FilterDefinition filter, UpdateDefinition update, FindOneAndUpdateOptions options) where TEntity : class, new();
#endregion Find And Update
}
}