示例#1
0
        public async Task <APIResponse> Delete(string name)
        {
            var id = CollectionDefinition.BuildId(name);

            _logger.LogInformation($"delete request recieved for id {id}");

            var collectionResponse = await _collectionRepository.GetById(id);

            if (!collectionResponse.Ok)
            {
                return(APIResponse.NotOk(Request.ToRequestString(), $"unable to delete data from elasticsearch, collection {name} not found", HttpStatusCode.NotFound));
            }
            await _collectionRepository.GetElasticBand().GetClient().DeleteAsync(collectionResponse.Data.Index);

            _logger.LogInformation($"deleted index {collectionResponse.Data.Index}");

            var deleteResponse = await _collectionRepository.Delete(id).ConfigureAwait(false);

            if (deleteResponse.Ok)
            {
                _logger.LogInformation($"deleted collection {name}");
                return(new APIResponse
                {
                    Request = Request.ToRequestString(),
                    Ok = true,
                    Result = "deleted",
                    Data = deleteResponse.Id
                });
            }

            _logger.LogInformation($"unable to delete collection with id {name} {deleteResponse.StatusCode}");
            return(APIResponse.NotOk(Request.ToRequestString(), "unable to delete data from elasticsearch", HttpStatusCode.NotFound, deleteResponse.Id));

            // TODO could do with logging helper which creates a trace id and logs request and response data automatically?
            // or stores up messages and appends them all as one log per request??
        }