Esempio n. 1
0
 public static void CreateViews(TextWriter writer, PgSchema oldSchema, PgSchema newSchema, SearchPathHelper searchPathHelper)
 {
     foreach (var newView in newSchema.GetViews())
     {
         if (oldSchema == null ||
             !oldSchema.ContainsView(newView.Name) ||
             IsViewModified(
                 oldSchema.GetView(newView.Name), newView))
         {
             searchPathHelper.OutputSearchPath(writer);
             writer.WriteLine();
             writer.WriteLine(newView.GetCreationSql());
         }
     }
 }
Esempio n. 2
0
        public static void DropViews(TextWriter writer, PgSchema oldSchema, PgSchema newSchema, SearchPathHelper searchPathHelper)
        {
            if (oldSchema == null)
            {
                return;
            }

            foreach (var oldView in oldSchema.GetViews())
            {
                var newView = newSchema.GetView(oldView.Name);

                if (newView == null || IsViewModified(oldView, newView))
                {
                    searchPathHelper.OutputSearchPath(writer);
                    writer.WriteLine();
                    writer.WriteLine(oldView.GetDropSql());
                }
            }
        }
Esempio n. 3
0
        public static void AlterViews(TextWriter writer, PgSchema oldSchema, PgSchema newSchema, SearchPathHelper searchPathHelper)
        {
            if (oldSchema == null)
            {
                return;
            }

            foreach (var oldView in oldSchema.GetViews())
            {
                var newView = newSchema.GetView(oldView.Name);
                if (newView == null)
                {
                    continue;
                }

                DiffDefaultValues(writer, oldView, newView, searchPathHelper);

                if (oldView.Comment == null &&
                    newView.Comment != null ||
                    oldView.Comment != null &&
                    newView.Comment != null &&
                    !oldView.Comment.Equals(
                        newView.Comment))
                {
                    searchPathHelper.OutputSearchPath(writer);
                    writer.WriteLine();
                    writer.Write("COMMENT ON VIEW ");
                    writer.Write(PgDiffUtils.GetQuotedName(newView.Name));
                    writer.Write(" IS ");
                    writer.Write(newView.Comment);
                    writer.WriteLine(';');
                }
                else if (oldView.Comment != null && newView.Comment == null)
                {
                    searchPathHelper.OutputSearchPath(writer);
                    writer.WriteLine();
                    writer.Write("COMMENT ON VIEW ");
                    writer.Write(PgDiffUtils.GetQuotedName(newView.Name));
                    writer.WriteLine(" IS NULL;");
                }

                var columnNames = newView.ColumnComments.Select(c => c.ColumnName).ToList();

                foreach (var columnComment in oldView.ColumnComments)
                {
                    if (!columnNames.Contains(columnComment.ColumnName))
                    {
                        columnNames.Add(columnComment.ColumnName);
                    }
                }

                foreach (var columnName in columnNames)
                {
                    var oldColumnComment = oldView.ColumnComments.FirstOrDefault(cc => columnName.Equals(cc.ColumnName));
                    var newColumnComment = newView.ColumnComments.FirstOrDefault(cc => columnName.Equals(cc.ColumnName));

                    if (oldColumnComment == null && newColumnComment != null ||
                        oldColumnComment != null && newColumnComment != null &&
                        !oldColumnComment.Comment.Equals(
                            newColumnComment.Comment))
                    {
                        searchPathHelper.OutputSearchPath(writer);
                        writer.WriteLine();
                        writer.Write("COMMENT ON COLUMN ");
                        writer.Write(PgDiffUtils.GetQuotedName(newView.Name));
                        writer.Write('.');
                        writer.Write(PgDiffUtils.GetQuotedName(newColumnComment.ColumnName));
                        writer.Write(" IS ");
                        writer.Write(newColumnComment.Comment);
                        writer.WriteLine(';');
                    }
                    else if (oldColumnComment != null &&
                             newColumnComment == null)
                    {
                        searchPathHelper.OutputSearchPath(writer);
                        writer.WriteLine();
                        writer.Write("COMMENT ON COLUMN ");
                        writer.Write(PgDiffUtils.GetQuotedName(newView.Name));
                        writer.Write('.');
                        writer.Write(PgDiffUtils.GetQuotedName(oldColumnComment.ColumnName));
                        writer.WriteLine(" IS NULL;");
                    }
                }
            }
        }