Raven.Database.DocumentDatabase.GetDocuments C# (CSharp) Method

GetDocuments() public method

public GetDocuments ( int start, int pageSize, System.Guid etag ) : RavenJArray
start int
pageSize int
etag System.Guid
return RavenJArray
		public RavenJArray GetDocuments(int start, int pageSize, Guid? etag)
		{
			var list = new RavenJArray();
			TransactionalStorage.Batch(actions =>
			{
				IEnumerable<JsonDocument> documents;
				if (etag == null)
					documents = actions.Documents.GetDocumentsByReverseUpdateOrder(start);
				else
					documents = actions.Documents.GetDocumentsAfter(etag.Value);
				var documentRetriever = new DocumentRetriever(actions, ReadTriggers);
				foreach (var doc in documents.Take(pageSize))
				{
					DocumentRetriever.EnsureIdInMetadata(doc);
					var document = documentRetriever
						.ExecuteReadTriggers(doc, null, ReadOperation.Load);
					if (document == null)
						continue;

					list.Add(document.ToJson());
				}
			});
			return list;
		}

Usage Example

		private static bool EncryptedDocumentsExist(DocumentDatabase database)
		{
			const int pageSize = 10;
			int index = 0;
			while (true)
			{
				var array = database.GetDocuments(index, index + pageSize, null);
				if (array.Length == 0)
				{
					// We've gone over all the documents in the database, and none of them are encrypted.
					return false;
				}

				if (array.All(x => EncryptionSettings.DontEncrypt(x.Value<RavenJObject>("@metadata").Value<string>("@id"))))
				{
					index += array.Length;
					continue;
				}
				// Found a document which is encrypted
				return true;
			}
		}