public void Can_scan_advanced_expressions() { var customer = InsertCustomerAndOrders(); var orders = db.FromScan <Order>(x => x.Product.StartsWith("Item A")) .Exec(); orders = db.FromScan <Order>(x => Dynamo.BeginsWith(x.Product, "Item A")).Exec(); orders = db.FromScan <Order>().Filter("begins_with(Product, :s)", new { s = "Item A" }) .Exec(); orders = db.FromScan <Order>(x => x.Product.Contains("em A")).Exec(); orders = db.FromScan <Order>(x => Dynamo.Contains(x.Product, "em A")).Exec(); orders = db.FromScan <Order>().Filter("contains(Product, :s)", new { s = "em A" }).Exec(); var qtys = new[] { 5, 10 }; orders = db.FromScan <Order>(x => qtys.Contains(x.Qty)).Exec(); orders = db.FromScan <Order>(x => Dynamo.In(x.Qty, qtys)).Exec(); orders = db.FromScan <Order>().Filter("Qty in(:q1,:q2)", new { q1 = 5, q2 = 10 }).Exec(); orders = db.FromScan <Order>(x => x.Product.Length == 6).Exec(); orders = db.FromScan <Order>(x => Dynamo.Size(x.Product) == 6).Exec(); orders = db.FromScan <Order>().Filter("size(Product) = :n", new { n = 6 }).Exec(); orders = db.FromScan <Order>(x => Dynamo.Between(x.Qty, 3, 5)).Exec(); orders = db.FromScan <Order>(x => x.Qty >= 3 && x.Qty <= 5).Exec(); orders = db.FromScan <Order>().Filter("Qty between :from and :to", new { from = 3, to = 5 }).Exec(); orders = db.FromScan <Order>(x => Dynamo.AttributeType(x.Product, DynamoType.String) && Dynamo.AttributeType(x.Qty, DynamoType.Number)) .Exec(); orders = db.FromScan <Order>().Filter( "attribute_type(Qty, :n) and attribute_type(Product, :s)", new { n = "N", s = "S" }) .Exec(); orders = db.FromScan <Order>(x => Dynamo.AttributeExists(x.Product)).Exec(); orders = db.FromScan <Order>().Filter("attribute_exists(Product)").Exec(); orders.PrintDump(); }
public void Does_serialize_Size() { InitTypes(); var q = Parse <Collection>(x => Dynamo.Size(x.Title) > 3); Assert.That(q.FilterExpression, Is.EqualTo("(size(Title) > :p0)")); Assert.That(q.Params.Count, Is.EqualTo(1)); Assert.That(q.Params[":p0"], Is.EqualTo(3)); q = Parse <Collection>(x => Dynamo.Size(x.SetInts) > 3); Assert.That(q.FilterExpression, Is.EqualTo("(size(SetInts) > :p0)")); Assert.That(q.Params[":p0"], Is.EqualTo(3)); q = Parse <Collection>(x => Dynamo.Size(x.ListStrings) > 3); Assert.That(q.FilterExpression, Is.EqualTo("(size(ListStrings) > :p0)")); Assert.That(q.Params[":p0"], Is.EqualTo(3)); }