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)); }
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)); }