Пример #1
0
        public override string Generate(DeleteDataExpression expression)
        {
            var result = new StringBuilder();

            if (expression.IsAllRows)
            {
                result.Append(String.Format("DELETE FROM {0}.{1};", Quoter.QuoteSchemaName(expression.SchemaName), Quoter.QuoteTableName(expression.TableName)));
            }
            else
            {
                foreach (var row in expression.Rows)
                {
                    var where = String.Empty;
                    var i = 0;

                    IEnumerable <IDataValue> columnValues = evaluator.Evaluate(row);

                    foreach (var item in columnValues)
                    {
                        if (i != 0)
                        {
                            where += " AND ";
                        }

                        where += String.Format("{0} {1} {2}", Quoter.QuoteColumnName(item.ColumnName), item.Value == null ? "IS" : "=", Quoter.QuoteDataValue(item));
                        i++;
                    }

                    result.Append(String.Format("DELETE FROM {0}.{1} WHERE {2};", Quoter.QuoteSchemaName(expression.SchemaName), Quoter.QuoteTableName(expression.TableName), where));
                }
            }

            return(result.ToString());
        }
Пример #2
0
        public override string Generate(DeleteDataExpression expression)
        {
            var deleteItems = new List <string>();


            if (expression.IsAllRows)
            {
                deleteItems.Add(string.Format(DeleteData, Quoter.QuoteTableName(expression.TableName), "1 = 1", CommandDelimiter));
            }
            else
            {
                foreach (var row in expression.Rows)
                {
                    IEnumerable <IDataValue> columnData = evaluator.Evaluate(row);

                    var whereClauses = new List <string>();

                    foreach (IDataValue item in columnData)
                    {
                        whereClauses.Add(string.Format("{0} {1} {2}", Quoter.QuoteColumnName(item.ColumnName), item.Value == null ? "IS" : "=", Quoter.QuoteDataValue(item)));
                    }

                    deleteItems.Add(string.Format(DeleteData, Quoter.QuoteTableName(expression.TableName), String.Join(" AND ", whereClauses.ToArray()), CommandDelimiter));
                }
            }

            return(String.Join(MultilineDelimiter, deleteItems.ToArray()));
        }
Пример #3
0
        public override string Generate(DeleteDataExpression expression)
        {
            var result = new StringBuilder();

            if (expression.IsAllRows)
            {
                result.Append(String.Format("DELETE FROM {0}.{1};", FormatSchema(expression.SchemaName), FormatIdentifier(expression.TableName)));
            }
            else
            {
                foreach (var row in expression.Rows)
                {
                    var where = String.Empty;
                    var i = 0;

                    foreach (var item in row)
                    {
                        if (i != 0)
                        {
                            where += " AND ";
                        }

                        where += String.Format("{0} {1} {2}", FormatIdentifier(item.Key), item.Value == null ? "IS" : "=", Constant.Format(item.Value));
                        i++;
                    }

                    result.Append(String.Format("DELETE FROM {0}.{1} WHERE {2};", FormatSchema(expression.SchemaName), FormatIdentifier(expression.TableName), where));
                }
            }

            return(result.ToString());
        }
Пример #4
0
        public override void Process(Expressions.DeleteDataExpression expression)
        {
            truncator.Truncate(expression);
            CheckTable(expression.TableName);
            RegisterExpression(expression, typeof(DeleteDataExpression));
            var subExpression = new DeleteDataExpression()
            {
                SchemaName = expression.SchemaName,
                TableName  = expression.TableName,
                IsAllRows  = expression.IsAllRows
            };

            if (expression.IsAllRows)
            {
                InternalProcess(Generator.Generate(expression));
            }
            else
            {
                foreach (var row in expression.Rows)
                {
                    subExpression.Rows.Clear();
                    subExpression.Rows.Add(row);
                    InternalProcess(Generator.Generate(subExpression));
                }
            }
        }
Пример #5
0
        public override string Generate(DeleteDataExpression expression)
        {
            var deleteItems = new List <string>();


            if (expression.IsAllRows)
            {
                deleteItems.Add(string.Format(DeleteData, Quoter.QuoteSchemaName(expression.SchemaName), Quoter.QuoteTableName(expression.TableName), "1 = 1"));
            }
            else
            {
                foreach (var row in expression.Rows)
                {
                    var whereClauses = new List <string>();
                    foreach (KeyValuePair <string, object> item in row)
                    {
                        whereClauses.Add(string.Format("{0} {1} {2}", Quoter.QuoteColumnName(item.Key), item.Value == null ? "IS" : "=", Quoter.QuoteValue(item.Value)));
                    }

                    deleteItems.Add(string.Format(DeleteData, Quoter.QuoteSchemaName(expression.SchemaName), Quoter.QuoteTableName(expression.TableName), String.Join(" AND ", whereClauses.ToArray())));
                }
            }

            return(String.Join("; ", deleteItems.ToArray()));
        }
Пример #6
0
        public override string Generate(DeleteDataExpression expression)
        {
            var result = new StringBuilder();

            if (expression.IsAllRows)
            {
                result.AppendFormat("DELETE FROM {0};", Quoter.QuoteTableName(expression.TableName, expression.SchemaName));
            }
            else
            {
                foreach (var row in expression.Rows)
                {
                    var where = string.Empty;
                    var i = 0;
                    foreach (var item in row)
                    {
                        if (i != 0)
                        {
                            where += " AND ";
                        }
                        var op = item.Value == null || item.Value == DBNull.Value ? "IS" : "=";
                        where += string.Format("{0} {1} {2}", Quoter.QuoteColumnName(item.Key), op,
                                               Quoter.QuoteValue(item.Value));
                        i++;
                    }
                    result.AppendFormat("DELETE FROM {0} WHERE {1};",
                                        Quoter.QuoteTableName(expression.TableName, expression.SchemaName), where);
                }
            }
            return(result.ToString());
        }
Пример #7
0
        public static DeleteDataExpression GetDeleteDataAllRowsExpression()
        {
            var expression = new DeleteDataExpression();

            expression.TableName = TestTableName1;
            expression.IsAllRows = true;
            return(expression);
        }
Пример #8
0
        public void DeleteVersion(long version)
        {
            var expression = new DeleteDataExpression {
                TableName = VersionTableMetaData.TableName, SchemaName = VersionTableMetaData.SchemaName
            };

            expression.Rows.Add(new ExplicitDataDefinition(new DataValue(VersionTableMetaData.ColumnName, version)));
            expression.ExecuteWith(Processor);
        }
Пример #9
0
        public override void Process(DeleteDataExpression expression)
        {
            if (!SchemaExists(expression.SchemaName))
            {
                return;
            }

            base.Process(expression);
        }
Пример #10
0
        /// <inheritdoc />
        public IDeleteDataBuilder FromTable(string tableName)
        {
            var expression = new DeleteDataExpression(_context)
            {
                TableName = tableName
            };

            return(new DeleteDataBuilder(expression));
        }
Пример #11
0
        public static DeleteDataExpression GetDeleteDataExpression()
        {
            var expression = new DeleteDataExpression();

            expression.TableName = TestTableName1;
            expression.Rows.Add(new ExplicitDataDefinition(new DataValue("Name", "Just'in"), new DataValue("Website", null)));

            return(expression);
        }
Пример #12
0
        public IDeleteDataSyntax FromTable(string tableName)
        {
            var expression = new DeleteDataExpression {
                TableName = tableName
            };

            _context.Expressions.Add(expression);
            return(new DeleteDataBuilder(expression));
        }
Пример #13
0
        public IDeleteDataSyntax FromTable(string tableName)
        {
            var expression = new DeleteDataExpression(_context.CurrentDatabaseProvider, _databaseProviders, _sqlSyntax)
            {
                TableName = tableName
            };

            _context.Expressions.Add(expression);
            return(new DeleteDataBuilder(expression));
        }
        public override void Process(DeleteDataExpression expression)
        {
            expression.ToLower();
            if (!TableExists(expression.SchemaName, expression.TableName))
            {
                return;
            }

            base.Process(expression);
        }
        public void CanDeleteAllData()
        {
            var expression = new DeleteDataExpression
            {
                IsAllRows = true, TableName = "Table1"
            };

            var sql = generator.Generate(expression);

            sql.ShouldBe("DELETE FROM \"public\".\"Table1\";");
        }
Пример #16
0
        public void DeleteVersion(long version)
        {
            var expression = new DeleteDataExpression {
                TableName = VersionTableMetaData.TableName, SchemaName = VersionTableMetaData.SchemaName
            };

            expression.Rows.Add(new DeletionDataDefinition
            {
                new KeyValuePair <string, object>(VersionTableMetaData.ColumnName, version)
            });
            expression.ExecuteWith(Processor);
        }
Пример #17
0
        public static DeleteDataExpression GetDeleteDataExpression()
        {
            var expression = new DeleteDataExpression();

            expression.TableName = TestTableName1;
            expression.Rows.Add(new DeletionDataDefinition
            {
                new KeyValuePair <string, object>("Name", "Just'in"),
                new KeyValuePair <string, object>("Website", null)
            });

            return(expression);
        }
Пример #18
0
        public void CanDeleteAllDataWithCondition()
        {
            var expression = new DeleteDataExpression
            {
                IsAllRows  = false,
                SchemaName = "public",
                TableName  = "Table1"
            };

            expression.Rows.Add(new ExplicitDataDefinition(new DataValue("description", "wibble")));

            var sql = generator.Generate(expression);

            sql.ShouldBe("DELETE FROM \"Table1\" WHERE \"description\" = 'wibble'");
        }
Пример #19
0
        public void CanDeleteAllDataWithMultipleConditions()
        {
            var expression = new DeleteDataExpression
            {
                IsAllRows  = false,
                SchemaName = "public",
                TableName  = "Table1"
            };

            expression.Rows.Add(new ExplicitDataDefinition(new DataValue("description", null), new DataValue("id", 10)));

            var sql = generator.Generate(expression);

            sql.ShouldBe("DELETE FROM \"Table1\" WHERE \"description\" IS NULL AND \"id\" = 10");
        }
Пример #20
0
        public void Truncate(DeleteDataExpression expression)
        {
            expression.TableName = Truncate(expression.TableName);
            List <DeletionDataDefinition> deletions = new List <DeletionDataDefinition>();

            foreach (DeletionDataDefinition deletion in expression.Rows)
            {
                DeletionDataDefinition newDeletion = new DeletionDataDefinition();
                foreach (var data in deletion)
                {
                    newDeletion.Add(new KeyValuePair <string, object>(Truncate(data.Key), data.Value));
                }
                deletions.Add(newDeletion);
            }
            expression.Rows.Clear();
            expression.Rows.AddRange(deletions);
        }
        public void CanDeleteAllDataWithMultipleConditions()
        {
            var expression = new DeleteDataExpression
            {
                IsAllRows  = false,
                SchemaName = "public",
                TableName  = "Table1"
            };

            expression.Rows.Add(new DeletionDataDefinition
            {
                new KeyValuePair <string, object>("description", null),
                new KeyValuePair <string, object>("id", 10)
            });

            var sql = generator.Generate(expression);

            sql.ShouldBe("DELETE FROM \"public\".\"Table1\" WHERE \"description\" IS NULL AND \"id\" = 10;");
        }
        public void CanDeleteAllDataWithCondition()
        {
            var expression = new DeleteDataExpression
            {
                IsAllRows  = false,
                SchemaName = "public",
                TableName  = "Table1"
            };

            expression.Rows.Add(
                new DeletionDataDefinition
            {
                new KeyValuePair <string, object>("description", "wibble")
            });

            var sql = generator.Generate(expression);

            sql.ShouldBe("DELETE FROM \"public\".\"Table1\" WHERE \"description\" = 'wibble';");
        }
Пример #23
0
        public override string Generate(DeleteDataExpression expression)
        {
            var deleteItems = new List <string>();


            if (expression.IsAllRows)
            {
                deleteItems.Add(string.Format(DeleteData, Quoter.QuoteTableName(expression.TableName, expression.SchemaName), "1 = 1"));
            }
            else
            {
                foreach (var row in expression.Rows)
                {
                    var whereClauses = new List <string>();
                    foreach (KeyValuePair <string, object> item in row)
                    {
                        var op = item.Value == null || item.Value == DBNull.Value ? "IS" : "=";
                        whereClauses.Add(
                            string.Format(
                                "{0} {1} {2}",
                                Quoter.QuoteColumnName(item.Key),
                                op,
                                Quoter.QuoteValue(item.Value)));
                    }

                    deleteItems.Add(string.Format(DeleteData, Quoter.QuoteTableName(expression.TableName, expression.SchemaName), String.Join(" AND ", whereClauses.ToArray())));
                }
            }

            var output = new StringBuilder();

            foreach (var deleteItem in deleteItems)
            {
                if (output.Length != 0)
                {
                    AppendSqlStatementEndToken(output);
                }

                output.Append(deleteItem);
            }

            return(output.ToString());
        }
Пример #24
0
        protected void SetupUndoDeleteData(DeleteDataExpression expression)
        {
            CanUndo = true;
            FirebirdSchemaProvider schema = new FirebirdSchemaProvider(Processor);
            FirebirdTableSchema    table  = schema.GetTableSchema(expression.TableName);

            using (IDataReader ds = Processor.ReadTableData(String.Empty, expression.TableName))
            {
                foreach (DeletionDataDefinition deletion in expression.Rows)
                {
                    InsertDataExpression insert = new InsertDataExpression()
                    {
                        SchemaName = String.Empty, TableName = expression.TableName
                    };
                    while (ds.Read())
                    {
                        bool match = true;
                        if (!expression.IsAllRows)
                        {
                            foreach (var where in deletion)
                            {
                                if (ds[where.Key].ToString() != where.Value.ToString())
                                {
                                    match = false;
                                    break;
                                }
                            }
                        }
                        if (match)
                        {
                            InsertionDataDefinition insertion = new InsertionDataDefinition();
                            foreach (ColumnDefinition colDef in table.Definition.Columns)
                            {
                                insertion.Add(new KeyValuePair <string, object>(colDef.Name, ds[colDef.Name]));
                            }
                            insert.Rows.Add(insertion);
                        }
                    }
                    UndoExpressions.Add(insert);
                }
            }
        }
Пример #25
0
        protected void SetupUndoDeleteData(DeleteDataExpression expression)
        {
            CanUndo = false;

            /*
             * FirebirdSchemaProvider schema = new FirebirdSchemaProvider(Processor);
             * FirebirdTableSchema table = schema.GetTableSchema(expression.TableName);
             * using (DataSet ds = Processor.ReadTableData(String.Empty, expression.TableName))
             * {
             *  foreach (IDataDefinition deletion in expression.Rows)
             *  {
             *      InsertDataExpression insert = new InsertDataExpression() { SchemaName = String.Empty, TableName = expression.TableName };
             *      foreach (DataRow dr in ds.Tables[0].Rows)
             *      {
             *          bool match = true;
             *          if (!expression.IsAllRows)
             *          {
             *              IEnumerable<KeyValuePair<string, object>> columnData = evaluator.GetData(row);
             *              foreach (var where in deletion)
             *              {
             *                  if (dr[where.Key].ToString() != where.Value.ToString())
             *                  {
             *                      match = false;
             *                      break;
             *                  }
             *              }
             *          }
             *          if (match)
             *          {
             *              InsertionDataDefinition insertion = new InsertionDataDefinition();
             *              foreach (ColumnDefinition colDef in table.Definition.Columns)
             *              {
             *                  insertion.Add(new KeyValuePair<string, object>(colDef.Name, dr[colDef.Name]));
             *              }
             *              insert.Rows.Add(insertion);
             *          }
             *      }
             *      UndoExpressions.Add(insert);
             *  }
             * }
             */
        }
Пример #26
0
 public override string Generate(DeleteDataExpression expression)
 {
     Truncator.Truncate(expression);
     return(base.Generate(expression));
 }
Пример #27
0
 public virtual void Process(DeleteDataExpression expression)
 {
     Process(Generator.Generate(expression));
 }
 public override void Process(DeleteDataExpression expression)
 {
     ExtendedMigrationProcessor.Process(expression);
 }
Пример #29
0
 public override string Generate(DeleteDataExpression expression)
 {
     return(string.Format("{0};", base.Generate(expression)));
 }
Пример #30
0
 public abstract string Generate(DeleteDataExpression expression);