Пример #1
0
        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);
                }
            }
        }
Пример #2
0
            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;
            }
Пример #3
0
        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);
                }
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
                }
            }
        }