Exemple #1
0
        protected override Task <object> Delete(IHttpRequest request)
        {
            return(ProcessRequestAsync(request,
                                       r => _queryFactory.CreateDeleteQuery(r),
                                       async query =>
            {
                long?deletedCount = null;
                DocumentValidationResult validationResult = null;

                try
                {
                    // Удаление документа из хранилища
                    deletedCount = await _storage.DeleteManyAsync(query.Filter);
                }
                catch (DocumentStorageWriteException exception)
                {
                    validationResult = exception.WriteResult?.ValidationResult;
                }

                return new DocumentDeleteQueryResult
                {
                    DeletedCount = deletedCount,
                    ValidationResult = validationResult
                };
            },
                                       _serviceHandler.OnBeforeDelete,
                                       _serviceHandler.OnAfterDelete));
        }
Exemple #2
0
        protected override Task <object> Post(IHttpRequest request)
        {
            return(ProcessRequestAsync(request,
                                       r => _queryFactory.CreatePostQuery(r),
                                       async query =>
            {
                IDictionary <string, BlobInfo> fileInfos = null;

                if (query.Files != null)
                {
                    fileInfos = new Dictionary <string, BlobInfo>();

                    // Сохранение списка файлов
                    foreach (var file in query.Files)
                    {
                        // Сохранение файла в хранилище
                        var blobInfo = await _blobStorage.CreateBlobAsync(file.Name, file.ContentType, file.Value);

                        // Включение информации о файле в ответ
                        fileInfos[file.Key] = blobInfo;

                        // Установка ссылки на файл в документе
                        query.Document.SetProperty(file.Key, blobInfo);
                    }
                }

                DocumentUpdateResult status = null;
                DocumentValidationResult validationResult = null;

                try
                {
                    // Сохранение документа в хранилище
                    status = await _storage.SaveOneAsync(query.Document);
                }
                catch (DocumentStorageWriteException exception)
                {
                    validationResult = exception.WriteResult?.ValidationResult;
                }

                return new DocumentPostQueryResult
                {
                    DocumentId = query.Document._id,
                    FileInfos = fileInfos,
                    Status = status,
                    ValidationResult = validationResult
                };
            },
                                       _serviceHandler.OnBeforePost,
                                       _serviceHandler.OnAfterPost));
        }