class Dbsketch::Rendering::Meta::ColumnRenderer
Public Class Methods
new(type_renderer: nil, keywords: {})
click to toggle source
# File lib/dbsketch/rendering/meta/column_renderer.rb, line 16 def initialize type_renderer: nil, keywords: {} ### Preconditions raise ArgumentError, "keywords is not a Hash" unless keywords.is_a? Hash ### @keywords = { :column => "Dbsketch::Model::Column.new", :computed_column => "Dbsketch::Model::ComputedColumn.new", :type => "Dbsketch::Model::Type.new" }.merge keywords @type_renderer = (nil == type_renderer ? TypeRenderer.new(:type_keyword => @keywords[:type]) : type_renderer) end
Public Instance Methods
create(column)
click to toggle source
# File lib/dbsketch/rendering/meta/column_renderer.rb, line 28 def create column ### Preconditions raise ArgumentError, "column is not a Dbsketch::Model::AbstractColumn" unless column.is_a? Dbsketch::Model::AbstractColumn ### if column.is_a? Dbsketch::Model::ComputedColumn create_computed_column column elsif column.is_a? Dbsketch::Model::Column create_column column else raise ArgumentError, "#{column.class} is an unknown subclass of Dbsketch::Model::AbstractColumn" end end
Private Instance Methods
create_column(column)
click to toggle source
# File lib/dbsketch/rendering/meta/column_renderer.rb, line 50 def create_column column str = "#{@keywords[:column]}('#{column.name}', #{@type_renderer.create column.type}" str << ", :order => #{column.order}" if nil != column.order str << ", :identity => true" if column.identity str << ", :nullable => false" if not column.nullable if nil != column.default str << ", :default => #{column.default.is_a?(String) ? "'#{column.default}'" : column.default}" end str << get_semantic(column) str << ")" str end
create_computed_column(column)
click to toggle source
# File lib/dbsketch/rendering/meta/column_renderer.rb, line 63 def create_computed_column column str = "#{@keywords[:computed_column]}('#{column.name}', '#{column.query}'" str << ", :nullable => false" if not column.nullable str << ", :persisted => true" if column.persisted str << get_semantic(column) str << ")" str end
get_semantic(column)
click to toggle source
# File lib/dbsketch/rendering/meta/column_renderer.rb, line 43 def get_semantic column str = "" str << ", :meaning => '#{column.meaning}'" if column.meaning str << ", :comment => '#{column.comment}'" if column.comment str end