Esempio n. 1
0
        public override void VisitQuerySelectClause(QuerySelectClause querySelectClause)
        {
            var visitor = new CaptureSelectNewFieldNamesVisitor();

            querySelectClause.AcceptVisitor(visitor, null);

            indexData.SelectExpressions = visitor.SelectExpressions;
            indexData.NumberOfSelectClauses++;
        }
Esempio n. 2
0
        public override void VisitQuerySelectClause(QuerySelectClause querySelectClause)
        {
            var selectExpressions = new Dictionary <string, Expression>();
            var visitor           = new CaptureSelectNewFieldNamesVisitor(false, new HashSet <string>(), selectExpressions);

            querySelectClause.AcceptVisitor(visitor, null);

            indexData.SelectExpressions = selectExpressions;
            indexData.NumberOfSelectClauses++;
        }
Esempio n. 3
0
        public override void Respond(IHttpContext context)
        {
            var indexStr = context.ReadString();
            VariableInitializer mapDefinition = indexStr.Trim().StartsWith("from")
                ? QueryParsingUtils.GetVariableDeclarationForLinqQuery(indexStr, true)
                : QueryParsingUtils.GetVariableDeclarationForLinqMethods(indexStr, true);

            var captureSelectNewFieldNamesVisitor = new CaptureSelectNewFieldNamesVisitor();
            mapDefinition.AcceptVisitor(captureSelectNewFieldNamesVisitor, null);

            context.WriteJson(new { captureSelectNewFieldNamesVisitor.FieldNames });
        }
Esempio n. 4
0
        public override void Respond(IHttpContext context)
        {
            var indexStr = context.ReadString();
            VariableInitializer mapDefinition = indexStr.Trim().StartsWith("from")
                ? QueryParsingUtils.GetVariableDeclarationForLinqQuery(indexStr, true)
                : QueryParsingUtils.GetVariableDeclarationForLinqMethods(indexStr, true);

            var captureSelectNewFieldNamesVisitor = new CaptureSelectNewFieldNamesVisitor();

            mapDefinition.AcceptVisitor(captureSelectNewFieldNamesVisitor, null);

            context.WriteJson(new { captureSelectNewFieldNamesVisitor.FieldNames });
        }
Esempio n. 5
0
        public async Task <HttpResponseMessage> IndexFields()
        {
            var indexStr = await ReadStringAsync();

            var mapDefinition = indexStr.Trim().StartsWith("from")
                                ? QueryParsingUtils.GetVariableDeclarationForLinqQuery(indexStr, true)
                                : QueryParsingUtils.GetVariableDeclarationForLinqMethods(indexStr, true);

            var captureSelectNewFieldNamesVisitor = new CaptureSelectNewFieldNamesVisitor();

            mapDefinition.AcceptVisitor(captureSelectNewFieldNamesVisitor, null);

            return(GetMessageWithObject(new { captureSelectNewFieldNamesVisitor.FieldNames }));
        }
Esempio n. 6
0
        public async Task <HttpResponseMessage> IndexFields()
        {
            var indexStr = await ReadStringAsync().ConfigureAwait(false);

            bool querySyntax   = indexStr.Trim().StartsWith("from");
            var  mapDefinition = querySyntax
                ? QueryParsingUtils.GetVariableDeclarationForLinqQuery(indexStr, true)
                : QueryParsingUtils.GetVariableDeclarationForLinqMethods(indexStr, true);

            var captureSelectNewFieldNamesVisitor = new CaptureSelectNewFieldNamesVisitor(querySyntax == false, new HashSet <string>(), new Dictionary <string, Expression>());

            mapDefinition.AcceptVisitor(captureSelectNewFieldNamesVisitor, null);

            return(GetMessageWithObject(new { FieldNames = captureSelectNewFieldNamesVisitor.FieldNames }));
        }
Esempio n. 7
0
        public override void VisitInvocationExpression(InvocationExpression invocationExpression)
        {
            base.VisitInvocationExpression(invocationExpression);

            var visitor = new CaptureSelectNewFieldNamesVisitor();

            invocationExpression.AcceptVisitor(visitor, null);

            var memberReferenceExpression = invocationExpression.Target as MemberReferenceExpression;

            if (memberReferenceExpression == null)
            {
                base.VisitInvocationExpression(invocationExpression);
                return;
            }

            if (memberReferenceExpression.MemberName == "Where")
            {
                indexData.HasWhere = true;
            }

            indexData.SelectExpressions = visitor.SelectExpressions;
        }
Esempio n. 8
0
        public override void VisitInvocationExpression(InvocationExpression invocationExpression)
        {
            base.VisitInvocationExpression(invocationExpression);

            var selectExpressions = new Dictionary <string, Expression>();
            var visitor           = new CaptureSelectNewFieldNamesVisitor(false, new HashSet <string>(), selectExpressions);

            invocationExpression.AcceptVisitor(visitor, null);

            var memberReferenceExpression = invocationExpression.Target as MemberReferenceExpression;

            if (memberReferenceExpression == null)
            {
                base.VisitInvocationExpression(invocationExpression);
                return;
            }

            if (memberReferenceExpression.MemberName == "Where")
            {
                indexData.HasWhere = true;
            }

            indexData.SelectExpressions = selectExpressions;
        }
Esempio n. 9
0
		public async Task<HttpResponseMessage> IndexFields()
		{
			var indexStr = await ReadStringAsync();
			bool querySyntax = indexStr.Trim().StartsWith("from");
			var mapDefinition = querySyntax
				? QueryParsingUtils.GetVariableDeclarationForLinqQuery(indexStr, true)
				: QueryParsingUtils.GetVariableDeclarationForLinqMethods(indexStr, true);

			var captureSelectNewFieldNamesVisitor = new CaptureSelectNewFieldNamesVisitor(querySyntax == false, new HashSet<string>(), new Dictionary<string, Expression>());
			mapDefinition.AcceptVisitor(captureSelectNewFieldNamesVisitor, null);

			return GetMessageWithObject(new { FieldNames = captureSelectNewFieldNamesVisitor.FieldNames });
		}
Esempio n. 10
0
		private void HandleMapFunction(ConstructorDeclaration ctor, string map)
		{
			string entityName;

			VariableDeclaration mapDefinition = map.Trim().StartsWith("from") ? 
				TransformMapDefinitionFromLinqQuerySyntax(map, out entityName) : 
				TransformMapDefinitionFromLinqMethodSyntax(map, out entityName);

			if (string.IsNullOrEmpty(entityName) == false)
			{
				//this.ForEntityNames.Add(entityName);
				ctor.Body.AddChild(new ExpressionStatement(
				                   	new InvocationExpression(
				                   		new MemberReferenceExpression(
				                   			new MemberReferenceExpression(new ThisReferenceExpression(), "ForEntityNames"), "Add"),
				                   		new List<Expression> {new PrimitiveExpression(entityName, entityName)})
				                   	));
			}
			// this.AddMapDefinition(from doc in docs ...);
			ctor.Body.AddChild(new ExpressionStatement(
			                   	new InvocationExpression(new MemberReferenceExpression(new ThisReferenceExpression(), "AddMapDefinition"),
			                   	                         new List<Expression>{new LambdaExpression
			                   	                         {
			                   	                         	Parameters =
			                   	                         		{
			                   	                         			new ParameterDeclarationExpression(null, "docs")
			                   	                         		},
			                   	                         	ExpressionBody = mapDefinition.Initializer
			                   	                         }}
			                   		)));


			if(firstMap)
			{
				mapDefinition.Initializer.AcceptVisitor(captureSelectNewFieldNamesVisitor, null);
				firstMap = false;
			}
			else
			{
				var secondMapFieldNames = new CaptureSelectNewFieldNamesVisitor();
				mapDefinition.Initializer.AcceptVisitor(secondMapFieldNames, null);
				if(secondMapFieldNames.FieldNames.SetEquals(captureSelectNewFieldNamesVisitor.FieldNames) == false)
				{
					var message = string.Format(@"Map functions defined as part of a multi map index must return identical types.
Baseline map		: {0}
Non matching map	: {1}

Common fields		: {2}
Missing fields		: {3}
Additional fields	: {4}", indexDefinition.Maps.First(),
					                            map,
					                            string.Join(", ", captureSelectNewFieldNamesVisitor.FieldNames.Intersect(secondMapFieldNames.FieldNames)),
					                            string.Join(", ", captureSelectNewFieldNamesVisitor.FieldNames.Except(secondMapFieldNames.FieldNames)),
					                            string.Join(", ", secondMapFieldNames.FieldNames.Except(captureSelectNewFieldNamesVisitor.FieldNames))
						);
					throw new InvalidOperationException(message);
				}
			}

			mapDefinition.Initializer.AcceptVisitor(new ThrowOnInvalidMethodCalls(), null);
			mapDefinition.Initializer.AcceptVisitor(captureQueryParameterNamesVisitorForMap, null);
		}
Esempio n. 11
0
		public async Task<HttpResponseMessage> IndexFields()
		{
			var indexStr = await ReadStringAsync();
			var mapDefinition = indexStr.Trim().StartsWith("from")
				? QueryParsingUtils.GetVariableDeclarationForLinqQuery(indexStr, true)
				: QueryParsingUtils.GetVariableDeclarationForLinqMethods(indexStr, true);

			var captureSelectNewFieldNamesVisitor = new CaptureSelectNewFieldNamesVisitor();
			mapDefinition.AcceptVisitor(captureSelectNewFieldNamesVisitor, null);

			return GetMessageWithObject(new { captureSelectNewFieldNamesVisitor.FieldNames });
		}