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 } }