public StreamDocumentActions(BlittableJsonTextWriter writer, DocumentsOperationContext context, DatabaseSource source, string propertyName, IMetadataModifier modifier = null) : base(writer, propertyName) { _context = context; _source = source; _modifier = modifier; }
public void EnsureMetadata(IMetadataModifier modifier = null) { if (_metadataEnsured) { return; } _metadataEnsured = true; DynamicJsonValue mutatedMetadata = null; if (Data.TryGet(Constants.Documents.Metadata.Key, out BlittableJsonReaderObject metadata)) { if (metadata.Modifications == null) { metadata.Modifications = new DynamicJsonValue(metadata); } mutatedMetadata = metadata.Modifications; } Data.Modifications = new DynamicJsonValue(Data) { [Constants.Documents.Metadata.Key] = (object)metadata ?? (mutatedMetadata = new DynamicJsonValue()) }; mutatedMetadata[Constants.Documents.Metadata.Id] = Id; modifier?.ModifyMetadata(metadata, ref mutatedMetadata); if (ChangeVector != null) { mutatedMetadata[Constants.Documents.Metadata.ChangeVector] = ChangeVector; } if (Flags != DocumentFlags.None) { mutatedMetadata[Constants.Documents.Metadata.Flags] = Flags.ToString(); } if (LastModified != DateTime.MinValue) { mutatedMetadata[Constants.Documents.Metadata.LastModified] = LastModified; } if (IndexScore.HasValue) { mutatedMetadata[Constants.Documents.Metadata.IndexScore] = IndexScore; } _hash = null; }