Example #1
0
        GetQueryColumns
            (IBuilderQueryData query,
            IList <string> tablenames,
            IList <string> aliasnames,
            int maxdepth = 1, int depth = 0)
        {
            var columns = new List <(IColumnQuery, IList <string>, IList <string>)>();

            if (tablenames == null)
            {
                tablenames = new List <string>();
            }
            tablenames.Add(query.Description.Name);

            if (aliasnames == null)
            {
                aliasnames = new List <string>();
            }
            aliasnames.Add(query.Description.Reference);

            foreach (var c in query.Columns)
            {
                columns.Add((c, new List <string>(tablenames), new List <string>(aliasnames)));
            }

            depth++;
            foreach (var j in query.GetJoins(maxdepth, depth))
            {
                columns.AddRange(GetQueryColumns(j.externalkey.Query, tablenames, aliasnames, maxdepth, depth));
            }

            return(columns);
        }
Example #2
0
        GetQueryJoins
            (IBuilderQueryData query,
            IList <string> prefix,
            int maxdepth = 1, int depth = 0)
        {
            var joins = new List <(IBuilderQueryData, IList <string>, IBuilderQueryData, IList <string>, IList <(IColumnQuery, IColumnQuery)>)>();

            depth++;
            foreach (var j in query.GetJoins(maxdepth, depth))
            {
                var tablename = new List <string>(prefix);
                tablename.Add(j.externalkey.Query.Description.Name);

                joins.Add((query, prefix, j.externalkey.Query, tablename, new List <(IColumnQuery, IColumnQuery)>()
                {
                    (j.internalkey, j.externalkey)
                }));

                joins.AddRange(GetQueryJoins(j.externalkey.Query, tablename, maxdepth, depth));
            }

            return(joins);
        }