Ejemplo n.º 1
0
        private string GetAlterTargetTables(Statements statements)
        {
            StringBuilder dropConstraints   = new();
            StringBuilder createConstraints = new();
            StringBuilder alters            = new();

            foreach (var tableKey in targetTables.Keys.Where(k => sourceTables.Keys.Contains(k)))
            {
                var tableValue        = targetTables[tableKey];
                var sourceTransformer = new TableDumpTransformer(tableValue, sourceBuilder.GetRawTableDumpLines(tableValue, settings.DiffPrivileges)).BuildLines();
                var targetTransformer = new TableDumpTransformer(tableValue, targetBuilder.GetRawTableDumpLines(tableValue, settings.DiffPrivileges)).BuildLines();
                if (targetTransformer.Equals(sourceTransformer))
                {
                    continue;
                }
                var tableAlters = targetTransformer.ToDiff(sourceTransformer, statements);
                if (tableAlters.Length > 0)
                {
                    alters.Append(tableAlters);
                }
            }
            return(alters.ToString());
        }
Ejemplo n.º 2
0
        private void BuildCreateTablesNotInTarget(StringBuilder sb, Statements statements)
        {
            StringBuilder first   = new();
            StringBuilder appends = new();
            var           header  = false;

            foreach (var tableKey in sourceTables.Keys.Where(k => !targetTables.Keys.Contains(k)))
            {
                var tableValue = sourceTables[tableKey];
                if (!header)
                {
                    AddComment(sb, "#region CREATE TABLES");
                    header = true;
                }
                var transformer = new TableDumpTransformer(tableValue, sourceBuilder.GetRawTableDumpLines(tableValue, true)).BuildLines();
                foreach (var line in transformer.Create)
                {
                    sb.AppendLine(line);
                }
                foreach (var line in transformer.Append)
                {
                    if (line.IsUniqueStatemnt())
                    {
                        statements.Unique.AppendLine(line);
                    }
                    else
                    {
                        statements.Create.AppendLine(line);
                    }
                }
            }
            if (header)
            {
                AddComment(sb, "#endregion CREATE TABLES");
            }
        }