using BukiVedi.Shared.Entities; using MongoDB.Driver; namespace BukiVedi.Shared { public interface IRepository where T : IEntity { internal IMongoCollection Collection { get; } Task> Aggregate(PipelineDefinition pipeline); Task GetById(string id); Task GetAll(); Task Get(FilterDefinition predicate); Task GetLast(FilterDefinition predicate, string sortField); Task Count(FilterDefinition predicate); Task Exists(FilterDefinition filter); Task ExistById(string id); T[] GetRandomDocuments(int count); Task Write(T obj); Task> Write(IEnumerable batch); Task WriteOrGetExists(T record, FilterDefinition filter); Task ModifyOne(FilterDefinition filter, UpdateDefinition update); Task Modify(FilterDefinition filter, UpdateDefinition update); Task ReWrite(T record); Task TryRemove(T obj); Task TryRemove(FilterDefinition filter); Task TryRemoveById(string id); internal Task Drop(); } }