public async Task SaveToolState(RavenToolState toolState)
        {
            var bulkInsertUrl = $"{serverName}/databases/{DatabaseName}/bulk_docs";

            var batchInsertCommands = toolState.Batches.Select(b => new
            {
                Method   = "PUT",
                Key      = $"{RavenConstants.BatchPrefix}/{b.Number}",
                Document = b,
                Metadata = new object()
            }).Cast <object>().ToList();

            batchInsertCommands.Add(
                new
            {
                Method   = "PUT",
                Key      = RavenConstants.ToolStateId,
                Document = this.FromToolState(toolState),
                Metadata = new object()
            });

            var serializedCommands = JsonConvert.SerializeObject(batchInsertCommands);
            var result             = await HttpClient
                                     .PostAsync(bulkInsertUrl, new StringContent(serializedCommands, Encoding.UTF8, "application/json"));

            result.EnsureSuccessStatusCode();
        }
        public async Task SaveToolState(RavenToolState toolState)
        {
            var bulkInsertUrl = $"{ServerName}/databases/{DatabaseName}/bulk_docs";

            var inserts = toolState.Batches.Select(batch => new PutCommand
            {
                Id           = $"{RavenConstants.BatchPrefix}/{batch.Number}",
                Type         = "PUT",
                ChangeVector = null,
                Document     = batch
            }).ToList();

            inserts.Add(new PutCommand
            {
                Id           = $"{RavenConstants.ToolStateId}",
                Type         = "PUT",
                ChangeVector = null,
                Document     = this.FromToolState(toolState)
            });

            var request = new
            {
                Commands = inserts.ToArray()
            };

            var serializeObject = JsonConvert.SerializeObject(request);
            var result          = await HttpClient.PostAsync(bulkInsertUrl, new StringContent(serializeObject, Encoding.UTF8, "application/json"));

            result.EnsureSuccessStatusCode();
        }
 public static RavenToolStateDto FromToolState(this IRavenTestSuite suite, RavenToolState toolState)
 {
     return(new RavenToolStateDto
     {
         RunParameters = toolState.RunParameters,
         Batches = RavenToolStateDto.ToBatches(toolState.Batches),
         Endpoint = toolState.EndpointName,
         Status = toolState.Status
     });
 }