public void EqualsWithDependencies() { var filter = new Extent(M.Person.ObjectType) { Predicate = new Equals { Dependencies = new[] { "useFirstname" }, PropertyType = M.Person.FirstName, Value = "John" }, }; var arguments = new Dictionary <string, string> { }; var queryExtent = filter.Build(this.Session, arguments); var extent = this.Session.Extent(M.Person.ObjectType); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); arguments.Add("useFirstname", "x"); queryExtent = filter.Build(this.Session, arguments); extent = this.Session.Extent(M.Person.ObjectType); extent.Filter.AddEquals(M.Person.FirstName, "John"); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); }
public void AndNestedContainsWithoutParameters() { var filter = new Extent(M.Organisation.ObjectType) { Predicate = new And { Operands = new IPredicate[] { new ContainedIn { PropertyType = M.Organisation.Employees, Extent = new Extent(M.Person.ObjectType) { Predicate = new Contains { PropertyType = M.Person.Gender, Parameter = "gender", }, }, }, }, }, }; var arguments = new Dictionary <string, string>(); var queryExtent = filter.Build(this.Session, arguments); var extent = this.Session.Extent(M.Organisation.ObjectType); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); }
public void NestedWithParameters() { var filter = new Extent(M.Organisation.ObjectType) { Predicate = new ContainedIn { PropertyType = M.Organisation.Employees, Extent = new Extent(M.Person.ObjectType) { Predicate = new Equals { PropertyType = M.Person.Gender, Parameter = "gender", }, }, }, }; var male = new Genders(this.Session).Male; var arguments = new Dictionary <string, string> { { "gender", male.Id.ToString() } }; var queryExtent = filter.Build(this.Session, arguments); var employees = this.Session.Extent(M.Person.ObjectType); employees.Filter.AddEquals(M.Person.Gender, male); var extent = this.Session.Extent(M.Organisation.ObjectType); extent.Filter.AddContainedIn(M.Organisation.Employees, employees); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); }
public void EqualsWithoutParameters() { var filter = new Extent(M.Person.ObjectType) { Predicate = new Equals { PropertyType = M.Person.FirstName, Parameter = "firstName" }, }; var queryExtent = filter.Build(this.Session); var extent = this.Session.Extent(M.Person.ObjectType); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); }
public void AndWithoutParameters() { // select from Person where FirstName='John' and LastName='Doe' var filter = new Extent(M.Person.ObjectType) { Predicate = new And { Operands = new IPredicate[] { new Equals { PropertyType = M.Person.FirstName, Parameter = "firstName", }, new Equals { PropertyType = M.Person.LastName, Parameter = "lastName" }, }, }, }; { var arguments = new Dictionary <string, string> { { "firstName", "John" }, }; var queryExtent = filter.Build(this.Session, arguments); var extent = this.Session.Extent(M.Person.ObjectType); extent.Filter.AddEquals(M.Person.FirstName, "John"); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); } { var queryExtent = filter.Build(this.Session); var extent = this.Session.Extent(M.Person.ObjectType); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); } }
public void EqualsWithParameters() { var filter = new Extent(M.Person.ObjectType) { Predicate = new Equals { PropertyType = M.Person.FirstName, Parameter = "firstName" }, }; var arguments = new Dictionary <string, string> { { "firstName", "John" } }; var queryExtent = filter.Build(this.Session, arguments); var extent = this.Session.Extent(M.Person.ObjectType); extent.Filter.AddEquals(M.Person.FirstName, "John"); Assert.Equal(extent.ToArray(), queryExtent.ToArray()); }
/// <summary> /// Loads an <see cref="Allors.Extent"/> based on this <see cref="Extent"/>. /// </summary> /// <param name="@this"></param> /// <param name="session"> /// The database to resolve information from. /// </param> /// <returns> /// The loaded <see cref="Extent"/>. /// </returns> public static IExtent Load(this Extent @this, ISession session) { IExtent[] Operands() => @this.Operands.Select(v => v.Load(session)).ToArray(); IExtent extent; switch (@this.Kind) { case ExtentKind.Extent: if ([email protected]) { return(null); } var objectType = (IComposite)session.Database.ObjectFactory.MetaPopulation.Find(@this.ObjectType.Value); extent = new Allors.Data.Extent(objectType) { Predicate = @this.Predicate?.Load(session), }; break; case ExtentKind.Union: extent = new Union(Operands()); break; case ExtentKind.Except: extent = new Except(Operands()); break; case ExtentKind.Intersect: extent = new Intersect(Operands()); break; default: throw new Exception("Unknown extent kind " + @this.Kind); } extent.Sorting = @this.Sorting?.Select(v => v.Load(session)).ToArray(); return(extent); }