public void WriteDocument(DocumentItem item, SmugglerProgressBase.CountsWithLastEtag progress) { if (item.Attachments != null) { if (_options.OperateOnTypes.HasFlag(DatabaseItemType.Attachments)) { progress.Attachments.ReadCount += item.Attachments.Count; } else { progress.Attachments.Skipped = true; } } _command.Add(item); HandleBatchOfDocumentsIfNecessary(); }
public void WriteDocument(DocumentItem item, SmugglerProgressBase.CountsWithLastEtag progress) { if (item.Attachments != null) throw new NotSupportedException(); var document = item.Document; using (document) { if (_options.OperateOnTypes.HasFlag(DatabaseItemType.Attachments)) WriteUniqueAttachmentStreams(document, progress); if (First == false) Writer.WriteComma(); First = false; Writer.WriteDocument(_context, document, metadataOnly: false, _filterMetadataProperty); } }
public void WriteDocument(DocumentItem item, SmugglerProgressBase.CountsWithLastEtag progress) { if (item.Attachments != null) { throw new NotSupportedException(); } var document = item.Document; using (document.Data) { WriteUniqueAttachmentStreams(document, progress); if (First == false) { Writer.WriteComma(); } First = false; document.EnsureMetadata(); _context.Write(Writer, document.Data); } }
public void Add(DocumentItem document) { Documents.Add(document); }
private IEnumerable <DocumentItem> ReadLegacyAttachments(INewDocumentActions actions) { if (UnmanagedJsonParserHelper.Read(_peepingTomStream, _parser, _state, _buffer) == false) { UnmanagedJsonParserHelper.ThrowInvalidJson("Unexpected end of json", _peepingTomStream, _parser); } if (_state.CurrentTokenType != JsonParserToken.StartArray) { UnmanagedJsonParserHelper.ThrowInvalidJson("Expected start array, but got " + _state.CurrentTokenType, _peepingTomStream, _parser); } var context = _context; var modifier = new BlittableMetadataModifier(context); var builder = CreateBuilder(context, modifier); try { while (true) { if (UnmanagedJsonParserHelper.Read(_peepingTomStream, _parser, _state, _buffer) == false) { UnmanagedJsonParserHelper.ThrowInvalidJson("Unexpected end of json while reading legacy attachments", _peepingTomStream, _parser); } if (_state.CurrentTokenType == JsonParserToken.EndArray) { break; } if (actions != null) { var oldContext = context; context = actions.GetContextForNewDocument(); if (oldContext != context) { builder.Dispose(); builder = CreateBuilder(context, modifier); } } builder.Renew("import/object", BlittableJsonDocumentBuilder.UsageMode.ToDisk); _context.CachedProperties.NewDocument(); ReadObject(builder); var data = builder.CreateReader(); builder.Reset(); var attachment = new DocumentItem.AttachmentStream { Stream = actions.GetTempStream() }; var attachmentInfo = ProcessLegacyAttachment(context, data, ref attachment); if (ShouldSkip(attachmentInfo)) { continue; } var dummyDoc = new DocumentItem { Document = new Document { Data = WriteDummyDocumentForAttachment(context, attachmentInfo), Id = attachmentInfo.Id, ChangeVector = string.Empty, Flags = DocumentFlags.HasAttachments, NonPersistentFlags = NonPersistentDocumentFlags.FromSmuggler, LastModified = _database.Time.GetUtcNow(), }, Attachments = new List <DocumentItem.AttachmentStream> { attachment } }; yield return(dummyDoc); } } finally { builder.Dispose(); } }