コード例 #1
0
        /// <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));
        }
コード例 #2
0
 internal KinveyQueryVisitor(Type type, VisitorClause visitorClause) : this(new StringQueryBuilder(), type, visitorClause)
 {
 }
コード例 #3
0
 internal KinveyQueryVisitor(IQueryBuilder builder, Type type, VisitorClause visitorClause)
 {
     builderMongoQuery = builder;
     clause            = visitorClause;
     LoadMapOfKeysForType(type);
 }