public override string BuildSql(SqlOptions sqlOptions)
        {
            var columnName = ColumnName.BuildSql(sqlOptions, FlowOptions.Construct(this));
            var value      = Value.BuildSql(sqlOptions, FlowOptions.Construct(this));

            return($"{columnName} = {value}");
        }
Example #2
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var orders = Entities.Select(s => s.BuildSql(sqlOptions, FlowOptions.Construct(this)));
            var order  = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", orders);

            return($"{sqlOptions.Command("ORDER BY")}{sqlOptions.NewLine()}{sqlOptions.Indent()}{order}");
        }
Example #3
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var tableName = Entity.BuildSql(sqlOptions, FlowOptions.Construct(this));
            var command   = sqlOptions.Command("INSERT INTO");

            return($"{command} {tableName}");
        }
Example #4
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var command  = sqlOptions.Command("ON");
            var property = Property.BuildSql(sqlOptions, FlowOptions.Construct(this));

            return($"{command} {property}");
        }
Example #5
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            string joinType;

            switch (JoinType)
            {
            case JoinType.Inner:
                joinType = "INNER JOIN";
                break;

            case JoinType.Left:
                joinType = "LEFT JOIN";
                break;

            case JoinType.Right:
                joinType = "RIGHT JOIN";
                break;

            case JoinType.FullOuter:
                joinType = "FULL OUTER JOIN";
                break;

            default: throw new ArgumentException(nameof(JoinType));
            }

            var command = sqlOptions.Command(joinType);
            var table   = TableEntity.BuildSql(sqlOptions, FlowOptions.Construct(this));
            var on      = OnBlock.BuildSql(sqlOptions, FlowOptions.Construct(this));

            return($"{command} {table} {on}");
        }
Example #6
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var command   = sqlOptions.Command("UPDATE");
            var tableName = TableName.BuildSql(sqlOptions, FlowOptions.Construct(this));

            return($"{command} {tableName}");
        }
 public override string BuildSql(SqlOptions sqlOptions)
 {
     var columns = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}",
         Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this))));
     var command = sqlOptions.Command("VALUES");
     return $"{command} ({sqlOptions.NewLine()}{sqlOptions.Indent()}{columns}{sqlOptions.NewLine()})";
 }
Example #8
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var columnName   = ColumnName.BuildSql(sqlOptions, FlowOptions.Construct(this));
            var propertyName = PropertyName.BuildSql(sqlOptions, FlowOptions.Construct(this));
            var command      = "=";

            return($"{columnName} {command} {propertyName}");
        }
Example #9
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var entities = Entities.Select(c => $"{c.BuildSql(sqlOptions, FlowOptions.Construct(this))}");
            var columns  = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", entities);
            var command  = sqlOptions.Command("SET");

            return($"{command}{sqlOptions.NewLine()}{sqlOptions.Indent()}{columns}");
        }
Example #10
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var tableColumnName = TableColumn.BuildSql(sqlOptions, FlowOptions.Construct(this));

            if (Value?.Present(sqlOptions) != true)
            {
                return($"{tableColumnName}");
            }

            var property = Value.BuildSql(sqlOptions, FlowOptions.Construct(this));
            var command  = sqlOptions.Command("AS");

            return($"{tableColumnName} {command} {property}");
        }
Example #11
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            AndOperator andBlock;

            if (Entities.Count == 1 && Entities[0] is AndOperator andOperator)
            {
                andBlock = andOperator;
            }
            else
            {
                andBlock = new AndOperator(Entities);
            }
            andBlock.Indent  = true;
            andBlock.NewLine = true;
            var conditions = andBlock.BuildSql(sqlOptions, FlowOptions.Construct(this));
            var command    = sqlOptions.Command("WHERE");

            return($"{command}{sqlOptions.NewLine()}{sqlOptions.Indent("    ")}{conditions}");
        }
Example #12
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            string command;

            switch (sqlOptions.DatabaseType)
            {
            case SqlDatabaseType.MsSql:

                command = sqlOptions.Command("FETCH NEXT");
                break;

            default:
                command = sqlOptions.Command("LIMIT");
                break;
            }

            var limitBy = LimitBy?.BuildSql(sqlOptions, FlowOptions.Construct(this));

            return($"{command} {limitBy}");
        }
Example #13
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var properties = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}",
                                         Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this))));
            string command;

            switch (sqlOptions.DatabaseType)
            {
            case SqlDatabaseType.Postgres:
            case SqlDatabaseType.SqLite:
                command = sqlOptions.Command("DO UPDATE SET");
                break;

            case SqlDatabaseType.MySql:
            case SqlDatabaseType.MariaDb:
                command = sqlOptions.Command("UPDATE");
                break;

            default: return(null);
            }

            return($"{command}{sqlOptions.NewLine()}{sqlOptions.Indent()}{properties}");
        }
Example #14
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            string dir;

            switch (Direction)
            {
            case OrderDirection.Asc:
                dir = "ASC";
                break;

            case OrderDirection.Desc:
                dir = "DESC";
                break;

            default: return(null);
            }

            var command   = sqlOptions.Command(dir);
            var orderItem = OrderItemOperand?.BuildSql(sqlOptions, FlowOptions.Construct(this)) ??
                            throw new ArgumentException(nameof(OrderItemOperand));

            return($"{orderItem} {command}");
        }
Example #15
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var joins = Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this)));

            return(string.Join(sqlOptions.NewLine(), joins));
        }
Example #16
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            if (sqlOptions == null)
            {
                throw new ArgumentException(nameof(sqlOptions));
            }

            CheckBeforeBuild(sqlOptions);
            IEnumerable <SqlBuilderEntity> data = new SqlBuilderEntity[]
            {
                CustomSqlBlocks[SqlSelectPosition.Start],
                SelectValuesBlock,
                CustomSqlBlocks[SqlSelectPosition.Select],
                FromTablesBlock,
                CustomSqlBlocks[SqlSelectPosition.From],
                JoinsBlock,
                CustomSqlBlocks[SqlSelectPosition.Join],
                WhereBlock,
                CustomSqlBlocks[SqlSelectPosition.Where],
                OrdersBlock,
                CustomSqlBlocks[SqlSelectPosition.Order],
                OffsetBlock,
                CustomSqlBlocks[SqlSelectPosition.Offset],
                LimitBlock,
                CustomSqlBlocks[SqlSelectPosition.Limit]
            };
            var commands = data.Where(b => CheckBlock(b, sqlOptions)).Select(b => b.BuildSql(sqlOptions, FlowOptions.Construct(this)));

            return(string.Join(sqlOptions.NewLine(), commands));
        }
Example #17
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var columns = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this))));

            return($"{sqlOptions.Command("SELECT")}{sqlOptions.NewLine()}{sqlOptions.Indent()}{columns}");
        }
Example #18
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var offset = Offset?.BuildSql(sqlOptions, FlowOptions.Construct(this));

            return($"{sqlOptions.Command("OFFSET")} {offset}");
        }
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var operands = string.Join(", ",
                                       Operands.Where(operand => operand.Present(sqlOptions))
                                       .Select(operand => operand.BuildSql(sqlOptions, FlowOptions.Construct(this))));
            var command = sqlOptions.Command(Command);

            return($"{command}({operands})");
        }
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var    keys = string.Join(", ", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this))));
            string command;

            switch (sqlOptions.DatabaseType)
            {
            case SqlDatabaseType.Postgres:
            case SqlDatabaseType.SqLite:
                command = "ON CONFLICT";
                return($"{command} ({keys})");

            case SqlDatabaseType.MySql:
            case SqlDatabaseType.MariaDb:
                command = "ON DUPLICATE KEY";
                return($"{command}");

            default: return(null);
            }
        }
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var tables  = string.Join(", ", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this))));
            var command = sqlOptions.Command("FROM");

            return($"{command} {tables}");
        }
Example #22
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            if (sqlOptions == null)
            {
                throw new ArgumentException(nameof(sqlOptions));
            }

            var updatedSqlOptions = ((SqlOptions)sqlOptions.Clone()).WithoutTableNames();

            CheckBeforeBuild(updatedSqlOptions);
            IEnumerable <SqlBuilderEntity> data = new SqlBuilderEntity[]
            {
                CustomBlocks[SqlDeletePosition.Start],
                DeleteFromBlock,
                CustomBlocks[SqlDeletePosition.From],
                WhereBlock,
                CustomBlocks[SqlDeletePosition.Where],
                ReturningsBlock,
                CustomBlocks[SqlDeletePosition.Return]
            };
            var commands = data.Where(b => CheckBlock(b, updatedSqlOptions)).Select(b => b.BuildSql(updatedSqlOptions, FlowOptions.Construct(this)));

            return(string.Join(sqlOptions.NewLine(), commands));
        }
Example #23
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            if (sqlOptions == null)
            {
                throw new ArgumentException(nameof(sqlOptions));
            }

            CheckBeforeBuild(sqlOptions);

            IEnumerable <SqlBuilderEntity> data = new SqlBuilderEntity[]
            {
                CustomBlocks[SqlUpdatePosition.Start],
                UpdateTableBlock,
                CustomBlocks[SqlUpdatePosition.Table],
                ColumnsBlock,
                CustomBlocks[SqlUpdatePosition.Columns],
                WhereBlock,
                CustomBlocks[SqlUpdatePosition.Where],
                ReturningsBlock,
                CustomBlocks[SqlUpdatePosition.Return]
            };
            var commands = data.Where(b => CheckBlock(b, sqlOptions)).Select(b => b.BuildSql(sqlOptions, FlowOptions.Construct(this)));

            return(string.Join(sqlOptions.NewLine(), commands));
        }
Example #24
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var keys    = string.Join($",{sqlOptions.NewLine()}{sqlOptions.Indent()}", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this))));
            var command = "RETURNING";

            return($"{command}{sqlOptions.NewLine()}{sqlOptions.Indent()}{keys}");
        }
Example #25
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            if (sqlOptions == null)
            {
                throw new ArgumentException(nameof(sqlOptions));
            }

            CheckBeforeBuild(sqlOptions);
            IEnumerable <SqlBuilderEntity> data = new SqlBuilderEntity[]
            {
                CustomBlocks[SqlInsertPosition.Start],
                InsertIntoBlock,
                CustomBlocks[SqlInsertPosition.Into],
                InsertColumnsBlock,
                InsertValuesBlock,
                CustomBlocks[SqlInsertPosition.Values],
                ConflictUpdate,
                CustomBlocks[SqlInsertPosition.Conflict],
                DoUpdateBlock,
                DoNothingBlock,
                CustomBlocks[SqlInsertPosition.Do],
                WhereBlock,
                CustomBlocks[SqlInsertPosition.Where],
                ReturningBlock,
                CustomBlocks[SqlInsertPosition.Return],
            };
            var commands = data.Where(b => CheckBlock(b, sqlOptions)).Select(b => b.BuildSql(sqlOptions, FlowOptions.Construct(this)));

            return(string.Join(sqlOptions.NewLine(), commands));
        }
Example #26
0
        public override string BuildSql(SqlOptions sqlOptions)
        {
            var columns = string.Join(", ", Entities.Select(e => e.BuildSql(sqlOptions, FlowOptions.Construct(this))));

            return($"({columns})");
        }