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