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) + " ]"); } }
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) + " ]"); } }