internal gsWhereTermBase GetWhereTerm(ExistsPredicate existsPredicate, gsExistsOrNotExists existsOrNotExists) { gsWhereTermExistsOrNotExists whereTerm = new gsWhereTermExistsOrNotExists(); whereTerm.ExistsType = existsOrNotExists; if (existsPredicate.Subquery.QueryExpression is QuerySpecification) { gsSelectQuery subQry = new gsSelectQuery(); subQry.QryName = $"subQry{gsSelectQuery.GetNextID()}"; whereTerm.QueryName = subQry.QryName; QuerySpecification qrySpec = existsPredicate.Subquery.QueryExpression as QuerySpecification; gsSelectQueryParser qryParser = new gsSelectQueryParser(); qryParser.ProcessQuerySpecification(qrySpec, subQry); whereTerm.Sql = subQry.ToString(); } else { throw new NotImplementedException($"QuerySpecification {existsPredicate.Subquery.QueryExpression.GetType().Name} not supported"); } return(whereTerm); }
internal gsWhereTermBase GetWhereTerm(InPredicate inPredicate, bool isNotIn) { gsWhereTermIn whereTerm = new gsWhereTermIn(); string subQryName = $"subQry{gsSelectQuery.GetNextID()}"; whereTerm.InType = isNotIn ? gsInOrNotIn.NotIn : gsInOrNotIn.In; whereTerm.Expression = gsScalarExpressionParserFactory.CreateParser(inPredicate.Expression, null).Parse(); if (inPredicate.Subquery != null) { gsSelectQuery subQry = new gsSelectQuery(); whereTerm.QueryName = subQry.QryName = subQryName; QuerySpecification qrySpec = inPredicate.Subquery.QueryExpression as QuerySpecification; gsSelectQueryParser qryParser = new gsSelectQueryParser(); qryParser.ProcessQuerySpecification(qrySpec, subQry); whereTerm.Sql = subQry.ToString(); } else if (inPredicate.Values.Count > 0) { List <string> values = new List <string>(); foreach (ScalarExpression val in inPredicate.Values) { string valueStr = Convert.ToString(gsScalarExpressionParserFactory.CreateParser(val, null).Parse().Value); values.Add(valueStr); } whereTerm.values = values; } else { throw new NotImplementedException("InPredicate type not supported"); } return(whereTerm); }