public static string GetTableNameOrAlias(this SqlQueryParser sqlQueryParser, string tableName) { //List<RbacSelectColumn> filtered = sqlQueryParser.Columns.Where(c => c.Table.Name.ToLower() == tableName.ToLower()).ToList(); //if ((filtered.Count > 0) && (string.IsNullOrEmpty(filtered[0].Table.Alias) == false)) // return filtered[0].Table.Alias; RbacTable table = sqlQueryParser.TablesReferred.Where(t => t.Name.Equals(tableName, StringComparison.OrdinalIgnoreCase)).SingleOrDefault(); if (table != null) { if (table.ReferencedOnly) { return(table.TempAlias); } else if (!string.IsNullOrEmpty(table.Alias)) { return(table.Alias); } else { return(table.Name); } } return(tableName); }
public static RbacJoin AddNewJoin(SqlQueryParser sqlQueryParser, string fromTableName, string fromTableColumn, string withTableName, string withTableColumn) { //RbacJoin joinClause = existingJoins.Where(jc => jc.WithTableName.Equals(withTableName).SingleOrDefault(); RbacJoin join = sqlQueryParser.JoinClauses.JoinExists(withTableName, fromTableName); if (join == null) { string fromTableNameAlias = sqlQueryParser.GetTableNameOrAlias(fromTableName); aliasNumber++; string withTableAlias = "t" + aliasNumber; join = new RbacJoin(fromTableName, fromTableNameAlias, withTableName, withTableAlias); join.FromTableColumn = fromTableColumn; join.WithTableColumn = withTableColumn; join.JoinClause = string.Format(" {0} join [{1}] [{2}] on [{2}].{3} = [{4}].{5} ", join.JoinType.ToString().ToLower(), withTableName, withTableAlias, withTableColumn, fromTableNameAlias, fromTableColumn); sqlQueryParser.JoinClauses.Add(join); return(join); } else { return(join); } }
public RbacSqlQueryEngine(SqlQueryParser sqlQueryParser, bool isDebugMode = false) { this.Errors = new List <string>(); this.Parser = sqlQueryParser; IsDebugMode = isDebugMode; Parser.Context.Trace.WriteLine("Engine:{0}", this.GetType().Name); }
public RbacSqlQueryEngine(Rbac context, string query, bool isDebugMode = false) { this.Errors = new List <string>(); Parser = new SqlQueryParser(context); Parser.Parse(query); IsDebugMode = isDebugMode; Parser.Context.Trace.WriteLine("Engine:{0}", this.GetType().Name); }
public void SetResult(SqlQueryParser parser) { QueryType = parser.QueryType.ToString(); Log = parser.AllErrors; Columns = parser.Columns; Errors = parser.AllErrors; IsParsed = parser.IsParsed; IsNotSupported = parser.IsNotSupported; IsZeroSelectColumn = parser.IsZeroSelectColumn; IsPermissionApplied = parser.IsPermissionApplied; IsParsingSkipped = parser.IsParsingSkipped; OriginalQuery = parser.OriginalQuery; ParsedQuery = parser.ParsedQuery; ParsedQueryStage1 = parser.ParsedQueryStage1; ParsedMethod = parser.ParsedMethod.ToString(); QueryType = parser.QueryType.ToString(); ExecutionTime = parser.ExecutionTime.TotalTimeFormatted; IsEngineExecuted = false; IsEngineDebugMode = false; Table = null; }