示例#1
0
        public async Task Test_Query_Index_Single()
        {
            using (var db = await OpenTestPartitionAsync())
            {
                var location = db.Root["Linq"];
                await CleanLocation(db, location);

                var indexFoos = new FdbIndex <long, string>(location.ByKey("Foos", "ByColor"));

                await db.WriteAsync(async (tr) =>
                {
                    var foos = await indexFoos.Resolve(tr);
                    foos.Add(tr, 1, "red");
                    foos.Add(tr, 2, "green");
                    foos.Add(tr, 3, "blue");
                    foos.Add(tr, 4, "red");
                }, this.Cancellation);

                // find all elements that are read
                var ids = await db.ReadAsync(async tr =>
                {
                    var lookup = indexFoos.Query(db).Lookup(x => x == "red");

                    Assert.That(lookup, Is.InstanceOf <FdbAsyncSequenceQuery <long> >());
                    Assert.That(lookup.Expression, Is.InstanceOf <FdbQueryIndexLookupExpression <long, string> >());
                    Log(lookup.Expression.GetDebugView());

                    return(await lookup.ToListAsync());
                }, this.Cancellation);

                Log("=> [ " + String.Join(", ", ids) + " ]");
            }
        }
        public async Task Test_Query_Index_Single()
        {
            using (var db = await OpenTestPartitionAsync())
            {
                var location = db.Partition.ByKey("Linq");

                await db.ClearRangeAsync(location, this.Cancellation);

                var index = new FdbIndex <long, string>("Foos.ByColor", location.Partition.ByKey("Foos", "ByColor"));

                await db.WriteAsync((tr) =>
                {
                    index.Add(tr, 1, "red");
                    index.Add(tr, 2, "green");
                    index.Add(tr, 3, "blue");
                    index.Add(tr, 4, "red");
                }, this.Cancellation);

                // find all elements that are read
                var lookup = index.Query(db).Lookup(x => x == "red");

                Assert.That(lookup, Is.InstanceOf <FdbAsyncSequenceQuery <long> >());
                Assert.That(lookup.Expression, Is.InstanceOf <FdbQueryIndexLookupExpression <long, string> >());
                Log(lookup.Expression.DebugView);

                var ids = await lookup.ToListAsync();

                Log("=> [ " + String.Join(", ", ids) + " ]");
            }
        }
示例#3
0
        public async Task Test_Query_Index_Range()
        {
            using (var db = await OpenTestPartitionAsync())
            {
                var location = db.Root["Linq"];
                await CleanLocation(db, location);

                var index = new FdbIndex <string, int>(location.ByKey("Foos", "ByScore"));

                await db.WriteAsync(async (tr) =>
                {
                    var foos = await index.Resolve(tr);
                    foos.Add(tr, "alpha", 10);
                    foos.Add(tr, "bravo", 16);
                    foos.Add(tr, "charly", 12);
                    foos.Add(tr, "echo", 666);
                    foos.Add(tr, "foxtrot", 54321);
                    foos.Add(tr, "golf", 768);
                    foos.Add(tr, "tango", 12345);
                    foos.Add(tr, "sierra", 667);
                    foos.Add(tr, "victor", 1234);
                    foos.Add(tr, "whisky", 9001);
                }, this.Cancellation);

                // find all up to 100
                var lookup = index.Query(db).Lookup(x => x <= 100);
                Assert.That(lookup, Is.InstanceOf <FdbAsyncSequenceQuery <string> >());
                Assert.That(lookup.Expression, Is.InstanceOf <FdbQueryIndexLookupExpression <string, int> >());
                Log(lookup.Expression.GetDebugView());

                var ids = await lookup.ToListAsync();

                Log("=> [ " + String.Join(", ", ids) + " ]");

                // find all that are over nine thousand
                lookup = index.Query(db).Lookup(x => x >= 9000);
                Assert.That(lookup, Is.InstanceOf <FdbAsyncSequenceQuery <string> >());
                Assert.That(lookup.Expression, Is.InstanceOf <FdbQueryIndexLookupExpression <string, int> >());
                Log(lookup.Expression.GetDebugView());

                ids = await lookup.ToListAsync();

                Log("=> [ " + String.Join(", ", ids) + " ]");
            }
        }
		public async Task Test_Query_Index_Single()
		{
			using (var db = await OpenTestPartitionAsync())
			{

				var location = db.Partition("Linq");

				await db.ClearRangeAsync(location, this.Cancellation);

				var index = new FdbIndex<long, string>("Foos.ByColor", location.Partition("Foos", "ByColor"));

				await db.WriteAsync((tr) =>
				{
					index.Add(tr, 1, "red");
					index.Add(tr, 2, "green");
					index.Add(tr, 3, "blue");
					index.Add(tr, 4, "red");
				}, this.Cancellation);

				// find all elements that are read
				var lookup = index.Query(db).Lookup(x => x == "red");

				Assert.That(lookup, Is.InstanceOf<FdbAsyncSequenceQuery<long>>());
				Assert.That(lookup.Expression, Is.InstanceOf<FdbQueryIndexLookupExpression<long, string>>());
				Console.WriteLine(lookup.Expression.DebugView);

				var ids = await lookup.ToListAsync();
				Console.WriteLine("=> [ " + String.Join(", ", ids) + " ]");

			}

		}
		public async Task Test_Query_Index_Range()
		{
			using (var db = await OpenTestPartitionAsync())
			{

				var location = db.Partition("Linq");

				await db.ClearRangeAsync(location, this.Cancellation);

				var index = new FdbIndex<string, int>("Bars.ByScore", location.Partition("Foos", "ByScore"));

				await db.WriteAsync((tr) =>
				{
					index.Add(tr, "alpha", 10);
					index.Add(tr, "bravo", 16);
					index.Add(tr, "charly", 12);
					index.Add(tr, "echo", 666);
					index.Add(tr, "foxtrot", 54321);
					index.Add(tr, "golf", 768);
					index.Add(tr, "tango", 12345);
					index.Add(tr, "sierra", 667);
					index.Add(tr, "victor", 1234);
					index.Add(tr, "whisky", 9001);
				}, this.Cancellation);

				// find all up to 100
				var lookup = index.Query(db).Lookup(x => x <= 100);
				Assert.That(lookup, Is.InstanceOf<FdbAsyncSequenceQuery<string>>());
				Assert.That(lookup.Expression, Is.InstanceOf<FdbQueryIndexLookupExpression<string, int>>());
				Console.WriteLine(lookup.Expression.DebugView);

				var ids = await lookup.ToListAsync();
				Console.WriteLine("=> [ " + String.Join(", ", ids) + " ]");
				
				// find all that are over nine thousand
				lookup = index.Query(db).Lookup(x => x >= 9000);
				Assert.That(lookup, Is.InstanceOf<FdbAsyncSequenceQuery<string>>());
				Assert.That(lookup.Expression, Is.InstanceOf<FdbQueryIndexLookupExpression<string, int>>());
				Console.WriteLine(lookup.Expression.DebugView);

				ids = await lookup.ToListAsync();
				Console.WriteLine("=> [ " + String.Join(", ", ids) + " ]");

			}

		}