public void CanUseMultiQuery() { using (var store = GetDocumentStore()) { using (var session = store.OpenSession()) { session.Store(new User { Name = "Ayende" }); session.Store(new User { Name = "Oren" }); session.SaveChanges(); } using (var session = store.OpenSession()) { session.Query <User>() .Customize(x => x.WaitForNonStaleResults()) .Where(u => u.Name == "Ayende") .ToArray(); } using (var commands = store.Commands()) { var command = new MultiGetCommand(commands.RequestExecutor.Cache, new List <GetRequest> { new GetRequest { Url = "/queries", Query = "?query=FROM Users WHERE Name = 'Ayende'" }, new GetRequest { Url = "/queries", Query = "?query=FROM Users WHERE Name = 'Oren'" } }); commands.RequestExecutor.Execute(command, commands.Context); string name; var result = (BlittableJsonReaderObject)command.Result[0].Result; var results = (BlittableJsonReaderArray)result["Results"]; result = (BlittableJsonReaderObject)results[0]; Assert.True(result.TryGet("Name", out name)); Assert.Equal("Ayende", name); result = (BlittableJsonReaderObject)command.Result[1].Result; results = (BlittableJsonReaderArray)result["Results"]; result = (BlittableJsonReaderObject)results[0]; Assert.True(result.TryGet("Name", out name)); Assert.Equal("Oren", name); } } }
public GetMultiFacetsCommand(DocumentConventions conventions, JsonOperationContext context, HttpCache cache, FacetQuery[] queries) { var commands = new List <GetRequest>(); foreach (var q in queries) { commands.Add(new LazyFacetsOperation(conventions, q).CreateRequest(context)); } _command = new MultiGetCommand(cache, commands); ResponseType = RavenCommandResponseType.Raw; }
public void CanUseMultiGetToBatchGetDocumentRequests() { using (var store = GetDocumentStore()) { const string docs = "/docs"; using (var session = store.OpenSession()) { session.Store(new User { Name = "Ayende" }); session.Store(new User { Name = "Oren" }); session.SaveChanges(); } using (var commands = store.Commands()) { var command = new MultiGetCommand(commands.RequestExecutor.Cache, new List <GetRequest> { new GetRequest { Url = docs, Query = "?id=users/1-A" }, new GetRequest { Url = docs, Query = "?id=users/2-A" } }); commands.RequestExecutor.Execute(command, commands.Context); string name; var result = (BlittableJsonReaderObject)command.Result[0].Result; var results = (BlittableJsonReaderArray)result["Results"]; result = (BlittableJsonReaderObject)results[0]; Assert.True(result.TryGet("Name", out name)); Assert.Equal("Ayende", name); result = (BlittableJsonReaderObject)command.Result[1].Result; results = (BlittableJsonReaderArray)result["Results"]; result = (BlittableJsonReaderObject)results[0]; Assert.True(result.TryGet("Name", out name)); Assert.Equal("Oren", name); } } }
public IEnumerable <GetResult <TSource> > Get <TSource>(IEnumerable <Tuple <DocumentId, LanguageRouting> > ids) { ids = (IEnumerable <Tuple <DocumentId, LanguageRouting> >)ids.ToList <Tuple <DocumentId, LanguageRouting> >(); ids.ValidateNotNullOrEmptyArgument(nameof(ids)); List <IdAndType> idAndTypeList = new List <IdAndType>(); foreach (Tuple <DocumentId, LanguageRouting> id in ids) { LanguageRouting routingOrDefault = id.Item2; if (routingOrDefault != null && routingOrDefault.IsValid()) { routingOrDefault = this.GetSupportedLanguageRoutingOrDefault(routingOrDefault); } idAndTypeList.Add(new IdAndType(id.Item1, (TypeName)this.Conventions.TypeNameConvention.GetTypeName(typeof(TSource)), routingOrDefault, this.DefaultIndex)); } MultiGetCommand <TSource> multiGetCommand = this.commands.MultiGet <TSource>((IndexName)this.DefaultIndex, (IEnumerable <IdAndType>)idAndTypeList); this.PrepareSerializerUsingConventions(multiGetCommand.CommandContext.Serializer); return(multiGetCommand.Execute().Results); }
public void CanHandleCaching() { using (var store = GetDocumentStore()) { const string docs = "/docs"; using (var session = store.OpenSession()) { session.Store(new User { Name = "Ayende" }); session.Store(new User { Name = "Oren" }); session.SaveChanges(); } using (var commands = store.Commands()) { var command = new MultiGetCommand(commands.RequestExecutor.Cache, new List <GetRequest> { new GetRequest { Url = docs, Query = "?id=users/1-A" }, new GetRequest { Url = docs, Query = "?id=users/2-A" } }); commands.RequestExecutor.Execute(command, commands.Context); Assert.True(command.Result[0].Headers.ContainsKey("ETag")); Assert.True(command.Result[1].Headers.ContainsKey("ETag")); command = new MultiGetCommand(commands.RequestExecutor.Cache, new List <GetRequest> { new GetRequest { Url = docs, Query = "?id=users/1-A", Headers = { { "If-None-Match", command.Result[0].Headers["ETag"] } } }, new GetRequest { Url = docs, Query = "?id=users/2-A", Headers = { { "If-None-Match", command.Result[1].Headers["ETag"] } } } }); commands.RequestExecutor.Execute(command, commands.Context); Assert.Equal(HttpStatusCode.NotModified, command.Result[0].StatusCode); Assert.Equal(HttpStatusCode.NotModified, command.Result[1].StatusCode); } } }