class Dbsketch::Rendering::Meta::DatabaseRenderer
Public Class Methods
new(index_renderer: nil, operation_renderer: nil, table_renderer: nil, trigger_renderer: nil, view_renderer: nil, options: {})
click to toggle source
# File lib/dbsketch/rendering/meta/database_renderer.rb, line 19 def initialize index_renderer: nil, operation_renderer: nil, table_renderer: nil, trigger_renderer: nil, view_renderer: nil, options: {}, keywords: {} ### Preconditions raise ArgumentError, "index_renderer is not a Dbsketch::Rendering::Meta::IndexRenderer" unless nil == index_renderer or index_renderer.is_a? IndexRenderer raise ArgumentError, "operation_renderer is not a Dbsketch::Rendering::Meta::OperationRenderer" unless nil == operation_renderer or operation_renderer.is_a? OperationRenderer raise ArgumentError, "table_renderer is not a Dbsketch::Rendering::Meta::TableRenderer" unless nil == table_renderer or table_renderer.is_a? TableRenderer raise ArgumentError, "trigger_renderer is not a Dbsketch::Rendering::Meta::TriggerRenderer" unless nil == trigger_renderer or trigger_renderer.is_a? TriggerRenderer raise ArgumentError, "view_renderer is not a Dbsketch::Rendering::Meta::ViewRenderer" unless nil == view_renderer or view_renderer.is_a? ViewRenderer raise ArgumentError, "options is not a Hash" unless options.is_a? Hash raise ArgumentError, "keywords is not a Hash" unless keywords.is_a? Hash ### @options = { :order_by_dependencies => true, :pretty => false }.merge options @keywords = keywords @index_renderer = (nil == index_renderer ? IndexRenderer.new : index_renderer) @operation_renderer = (nil == operation_renderer ? OperationRenderer.new : operation_renderer) @table_renderer = (nil == table_renderer ? TableRenderer.new(:options => @options, :keywords => @keywords) : table_renderer) @trigger_renderer = (nil == trigger_renderer ? TriggerRenderer.new : trigger_renderer) @view_renderer = (nil == view_renderer ? ViewRenderer.new : view_renderer) end
Public Instance Methods
alter(database_diff)
click to toggle source
# File lib/dbsketch/rendering/meta/database_renderer.rb, line 50 def alter database_diff ### Preconditions raise ArgumentError, "database_diff is not a Dbsketch::Comparison::DatabaseDiff" unless database_diff.is_a? Dbsketch::Comparison::DatabaseDiff ### separator = "\n" diffs = database_diff.indexes + database_diff.operations + database_diff.tables + database_diff.triggers + database_diff.views deletions = diffs.select { |d| d.deletion? }.map { |i| drop_item i.old_value } changes = diffs.select { |d| d.change? }.map { |i| alter_item(i) } creations = diffs.select { |d| d.addition? }.map { |i| create_item i.new_value } (deletions + changes + creations).flatten.compact.join(separator) + separator end
create(database)
click to toggle source
# File lib/dbsketch/rendering/meta/database_renderer.rb, line 41 def create database ### Preconditions raise ArgumentError, "database is not a Dbsketch::Model::Database" unless database.is_a? Dbsketch::Model::Database ### separator = @options[:pretty] ? "\n\n" : "\n" database.order_items! if @options[:order_by_dependencies] database.items.map { |i| create_item i }.flatten.compact.join(separator) + separator end
Private Instance Methods
alter_item(item_diff)
click to toggle source
# File lib/dbsketch/rendering/meta/database_renderer.rb, line 94 def alter_item item_diff if item_diff.old_value.is_a? Dbsketch::Model::Index "Index.alter #{create_item(item_diff.new_value)}" elsif item_diff.old_value.is_a? Dbsketch::Model::Operation "Operation.alter #{create_item(item_diff.new_value)}" elsif item_diff.old_value.is_a? Dbsketch::Model::Table @table_renderer.alter item_diff elsif item_diff.old_value.is_a? Dbsketch::Model::Trigger "Trigger.alter #{create_item(item_diff.new_value)}" elsif item_diff.old_value.is_a? Dbsketch::Model::View "View.alter #{create_item(item_diff.new_value)}" end end
create_item(item)
click to toggle source
# File lib/dbsketch/rendering/meta/database_renderer.rb, line 66 def create_item item if item.is_a? Dbsketch::Model::Index @index_renderer.create item elsif item.is_a? Dbsketch::Model::Operation @operation_renderer.create item elsif item.is_a? Dbsketch::Model::Table @table_renderer.create item elsif item.is_a? Dbsketch::Model::Trigger @trigger_renderer.create item elsif item.is_a? Dbsketch::Model::View @view_renderer.create item end end
drop_item(item)
click to toggle source
# File lib/dbsketch/rendering/meta/database_renderer.rb, line 80 def drop_item item if item.is_a? Dbsketch::Model::Index @index_renderer.drop item elsif item.is_a? Dbsketch::Model::Operation @operation_renderer.drop item elsif item.is_a? Dbsketch::Model::Table @table_renderer.drop item elsif item.is_a? Dbsketch::Model::Trigger @trigger_renderer.drop item elsif item.is_a? Dbsketch::Model::View @view_renderer.drop item end end