public void ThrowsOnParameterCountBeingOtherThanOne() { var sut = new DocumentPropertyPathProvider(Mock.Of <ICoreInterfaceProvider>()); Assert.Throws <OnlyOneParameterAllowedInExpressionException>(() => sut.GetFor((Expression <Func <string> >)(() => string.Empty))); Assert.Throws <OnlyOneParameterAllowedInExpressionException>(() => sut.GetFor((Expression <Func <object, object, string> >)((d1, d2) => string.Empty))); Assert.Throws <OnlyOneParameterAllowedInExpressionException>(() => sut.GetFor((Expression <Func <object, object, object, string> >)((d1, d2, d3) => string.Empty))); }
public IDocumentFinderQueryBuilder WhereEquals <T1, T2>(Expression <Func <T1, T2> > property, T2 value) where T1 : class { var path = DocumentPropertyPathProvider.GetFor(property); Criteria.Add(d => { var a = DocumentPropertyFinder.GetFor(d, path); if (a == null) { if (value == null) { return(true); } else { return(false); } } return(a.Equals(value)); }); return(this); }
public IDocumentFinderQueryBuilder WhereExists <T1, T2>(Expression <Func <T1, T2> > property) where T1 : class { var path = DocumentPropertyPathProvider.GetFor(property); Criteria.Add(d => DocumentPropertyFinder.Exists(d, path)); return(this); }
public IDocumentFinderQueryBuilder WhereIn <T1, T2>(Expression <Func <T1, T2> > property, IEnumerable <T2> values) where T1 : class { var path = DocumentPropertyPathProvider.GetFor(property); Criteria.Add(d => { var a = DocumentPropertyFinder.GetFor(d, path); if (a == null) { return(false); } if (!(a is T2)) { return(false); } return(values.Contains((T2)a)); }); return(this); }
public IDocumentFinderQueryBuilder WhereExists <T1, T2>(Expression <Func <T1, T2> > property) where T1 : class { Filters.Add(Builders <Document> .Filter.Exists(new StringFieldDefinition <Document, T2>(DocumentPropertyPathProvider.GetFor(property)))); return(this); }
public IDocumentFinderQueryBuilder WhereIn <T1, T2>(Expression <Func <T1, T2> > property, IEnumerable <T2> values) where T1 : class { Filters.Add(Builders <Document> .Filter.In(new StringFieldDefinition <Document, T2>(DocumentPropertyPathProvider.GetFor(property)), values)); return(this); }
public IDocumentFinderQueryBuilder WhereEquals <T1, T2>(Expression <Func <T1, T2> > property, T2 value) where T1 : class { if (value == null) { Filters.Add( Builders <Document> .Filter.And( Builders <Document> .Filter.Exists(new StringFieldDefinition <Document, T2>(DocumentPropertyPathProvider.GetFor(property))), Builders <Document> .Filter.Eq(new StringFieldDefinition <Document, T2>(DocumentPropertyPathProvider.GetFor(property)), value) ) ); } else { Filters.Add( Builders <Document> .Filter.Eq(new StringFieldDefinition <Document, T2>(DocumentPropertyPathProvider.GetFor(property)), value) ); } return(this); }
public IDocumentFinderQueryBuilder Select <T1, T2>(Expression <Func <T1, T2> > property) where T1 : class { if (Projection == null) { Projection = Builders <Document> .Projection.Include(new StringFieldDefinition <Document, T2>(DocumentPropertyPathProvider.GetFor(property))); } else { Projection = Projection.Include(new StringFieldDefinition <Document, T2>(DocumentPropertyPathProvider.GetFor(property))); } return(this); }