Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
 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);
 }
Example #4
0
 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);
 }
Example #5
0
        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;
        }