/// <summary>Get one document asynchronous fashion</summary> /// <param name="request">Object of type Request</param> /// <returns>Mongo document</returns> public async Task <T> GetOneAsync(Request request) { var(_, filters) = request; var filter = MongoDBDefinitions.BuildFilter <T>(filters); return(await _context.Find(filter).FirstOrDefaultAsync()); }
/// <summary>Get a list of documents</summary> /// <param name="request">Object of type request</param> /// <param name="relations">List of collections referenced</param> /// <returns>Mongo documents list</returns> public async Task <IEnumerable <T> > GetAllAsync(Request request, List <Relation> relations) { var(sort, pageSize, page, entities, filters) = request; var filter = MongoDBDefinitions.BuildFilter <T>(filters); var sortTypedFilter = MongoDBDefinitions.BuildSortFilter <T>(sort); if (entities.IsEmpty()) { return(await _context .Find(filter) .Skip(page * pageSize) .Limit(pageSize) .Sort(sortTypedFilter) .ToListAsync()); } var sortBsonFilter = MongoDBDefinitions.BuildSortFilter <BsonDocument>(sort); return(await MongoDBDefinitions .Populate <T> ( collection : _context, filter : filter, sortFilter : sortBsonFilter, relations : relations, request : request ) .ToListAsync()); }
/// <summary> /// Counts the documents of a collection /// </summary> /// <param name="request">Request object model</param> /// <returns>Number of documents</returns> public async Task <int> CountAsync(Request request) { var(_, filters) = request; var filter = MongoDBDefinitions.BuildFilter <T>(filters); var totalDocuments = await _context.CountDocumentsAsync(filter); return((int)totalDocuments); }