private Task FlushBatch()
{
if (batch.Count == 0)
return new CompletedTask();
var putCommands = (from doc in batch
let metadata = doc.Value<RavenJObject>("@metadata")
let removal = doc.Remove("@metadata")
select new PutCommandData
{
Metadata = metadata,
Document = doc,
Key = metadata.Value<string>("@id"),
}).ToArray();
return commands
.BatchAsync(putCommands)
.ContinueOnSuccess(task => batch.Clear());
}
}