public async Task UpdateAsync(string id, QuestionUpdateInput request, CancellationToken cancellationToken) { var filter = Builders <Question> .Filter.Eq(q => q.Id, id); var updateFilterList = new List <UpdateDefinition <Question> >(); if (!string.IsNullOrEmpty(request.Title)) { updateFilterList.Add(Builders <Question> .Update.Set(m => m.Title, request.Title)); } if (!string.IsNullOrEmpty(request.Content)) { updateFilterList.Add(Builders <Question> .Update.Set(m => m.Content, request.Content)); } if (request.Tags != null && request.Tags.Any()) { updateFilterList.Add(Builders <Question> .Update.Set(m => m.Tags, request.Tags)); } if (!string.IsNullOrEmpty(request.Summary)) { updateFilterList.Add(Builders <Question> .Update.Push(m => m.Comments, new Comment { Content = request.Summary, CreateAt = DateTime.Now })); } UpdateDefinition <Question> updateDefinition = Builders <Question> .Update.Combine(updateFilterList); await _questionCollection.UpdateOneAsync(filter, updateDefinition, null, cancellationToken); }
public async Task <IActionResult> UpdateAsync(string id, [FromBody] QuestionUpdateInput request, CancellationToken cancellationToken) { await _quesitonService.UpdateAsync(id, request, cancellationToken); return(Ok()); }