public override void OnPut(
string key,
RavenJObject document,
RavenJObject metadata,
TransactionInformation transactionInformation)
{
Contract.Assume(!string.IsNullOrWhiteSpace(key));
RavenJToken versionToken;
if (!document.TryGetValue("Revision", out versionToken) || key.Contains(RevisionSegment))
{
return;
}
using (Database.DisableAllTriggersForCurrentThread())
{
var revisionCopy = new RavenJObject(document);
var revisionKey = $"{key}{RevisionSegment}{versionToken.Value<int>()}";
Database.TransactionalStorage.Batch(storage =>
storage.Documents.AddDocument(revisionKey, null, revisionCopy, metadata));
}
}
}