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()); } } }
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()); } } }
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;"); } } } }