示例#1
0
        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);
        }
示例#2
0
        public async Task <IActionResult> UpdateAsync(string id, [FromBody] QuestionUpdateInput request, CancellationToken cancellationToken)
        {
            await _quesitonService.UpdateAsync(id, request, cancellationToken);

            return(Ok());
        }