/// <summary> /// Builds the mongo-style query string to be run against the backend. /// </summary> /// <param name="query">LINQ-style query that can be used to filter delete results.</param> /// <param name="visitorClause">Enum to filter LINQ clauses which should be used in a query for network request.</param> /// <returns>The mongo-style query string.</returns> private static string GetQuery <T>(IQueryable <object> query, VisitorClause visitorClause) { if (query != null) { StringQueryBuilder queryBuilder = new StringQueryBuilder(); KinveyQueryVisitor visitor = new KinveyQueryVisitor(queryBuilder, typeof(T), visitorClause); QueryModel queryModel = (query.Provider as KinveyQueryProvider)?.qm; queryBuilder.Write("{"); queryModel?.Accept(visitor); queryBuilder.Write("}"); string mongoQuery = queryBuilder.BuildQueryString(); return(mongoQuery); } return(default(string)); }
internal KinveyQueryVisitor(Type type, VisitorClause visitorClause) : this(new StringQueryBuilder(), type, visitorClause) { }
internal KinveyQueryVisitor(IQueryBuilder builder, Type type, VisitorClause visitorClause) { builderMongoQuery = builder; clause = visitorClause; LoadMapOfKeysForType(type); }