Exemple #1
0
        /// <summary>
        /// Returns the statement as an SQL string.
        /// </summary>
        public override String ToString()
        {
            var stringBuilder = new StringBuilder("SELECT ");

            if (!Columns.Any())
            {
                Columns.Add("*");
            }

            stringBuilder.AppendLine(String.Join(QueryBuilder.ColumnSeparator, Columns));
            stringBuilder.AppendLine(FromBuilder.ToString());

            if (GroupByColumns.Any())
            {
                stringBuilder.AppendLine("GROUP BY " + String.Join(QueryBuilder.ColumnSeparator, GroupByColumns));
            }

            if (OrderByColumns.Any())
            {
                var orderByColumns = OrderByColumns
                                     .Select(pair => pair.Key + " " + (pair.Value == SortingDirection.Ascending ? "ASC" : "DESC"))
                                     .ToArray();

                stringBuilder.AppendLine("ORDER BY " + String.Join(QueryBuilder.ColumnSeparator, orderByColumns));
            }

            return(stringBuilder.ToString().Trim());
        }
Exemple #2
0
        public QuerySpecificationBuilderImpl(
            SQLVendor vendor,
            SelectColumnClauseBuilder columnsBuilder,
            FromBuilder fromBuilder,
            BooleanBuilder whereBuilder,
            GroupByBuilder groupByBuilder,
            BooleanBuilder havingBuilder,
            OrderByBuilder orderByBuilder
            )
            : base(vendor)
        {
            ArgumentValidator.ValidateNotNull(nameof(columnsBuilder), columnsBuilder);
            ArgumentValidator.ValidateNotNull(nameof(fromBuilder), fromBuilder);
            ArgumentValidator.ValidateNotNull(nameof(whereBuilder), whereBuilder);
            ArgumentValidator.ValidateNotNull(nameof(groupByBuilder), groupByBuilder);
            ArgumentValidator.ValidateNotNull(nameof(havingBuilder), havingBuilder);
            ArgumentValidator.ValidateNotNull(nameof(orderByBuilder), orderByBuilder);

            this._colsBuilder    = columnsBuilder;
            this._fromBuilder    = fromBuilder;
            this._whereBuilder   = whereBuilder;
            this._groupByBuilder = groupByBuilder;
            this._havingBuilder  = havingBuilder;
            this._orderByBuilder = orderByBuilder;
        }
Exemple #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SelectBuilder"/> class.
 /// </summary>
 internal SelectBuilder(QueryBuilder queryBuilder, FromBuilder fromBuilder, params String[] columns)
     : base(queryBuilder)
 {
     Columns        = new List <String>(columns);
     FromBuilder    = fromBuilder;
     GroupByColumns = new List <GroupByClause>();
     OrderByColumns = new Dictionary <String, SortingDirection>();
 }
Exemple #4
0
 public PagedSelectCommandBuilder CrossJoin(string value)
 => this.Chain(() =>
 {
     if (FromBuilder.Length == 0)
     {
         throw new InvalidOperationException("No FROM clause found to add CROSS JOIN clause to");
     }
     FromBuilder.Append(" CROSS JOIN ").Append(value);
 });
Exemple #5
0
 public PagedSelectCommandBuilder RightOuterJoin(string value)
 => this.Chain(() =>
 {
     if (FromBuilder.Length == 0)
     {
         throw new InvalidOperationException("No FROM clause found to add RIGHT OUTER JOIN clause to");
     }
     FromBuilder.Append(" RIGHT OUTER JOIN ").Append(value);
 });
Exemple #6
0
 public PagedSelectCommandBuilder Clear()
 {
     SelectBuilder.Clear();
     FromBuilder.Clear();
     WhereBuilder.Clear();
     OrderByBuilder.Clear();
     GroupByBuilder.Clear();
     HavingBuilder.Clear();
     CommandParameters.Clear();
     Distinct = false;
     Offset   = 0;
     PageSize = 0;
     return(this);
 }
Exemple #7
0
 public PagedSelectCommandBuilder From(string value)
 => this.Chain(() => FromBuilder.Append(value));
Exemple #8
0
 public static FromBuilder AddTableNamesP(this FromBuilder builder, params TableName[] tableNames)
 {
     return(builder.AddTableNames(tableNames.Select(n => Tuple.Create <String, TableName>(null, n))));
 }
Exemple #9
0
 public static FromBuilder AddTableRefsP(this FromBuilder builder, params TableReference[] tableRefs)
 {
     return(builder.AddTableRefs(tableRefs));
 }
Exemple #10
0
 public static FromBuilder AddTableNamesP(this FromBuilder builder, params Tuple <String, TableName>[] tableNames)
 {
     return(builder.AddTableNames(tableNames));
 }