class Mimi::DB::Dictate::SchemaDefinition::Column
Represents a column in schema definition
Constants
- DEFAULT_TYPE
Attributes
name[R]
params[R]
sequel_type[R]
type[R]
Public Class Methods
new(name, opts)
click to toggle source
Creates a Column
object
@param name [String,Symbol] @param opts [Hash]
# File lib/mimi/db/dictate/schema_definition.rb, line 92 def initialize(name, opts) @name = name.to_sym @params = opts.dup @params[:type] ||= @params[:as] || DEFAULT_TYPE @params = Mimi::DB::Dictate::TypeDefaults.infer_params(@params) @type = @params[:type] @sequel_type = @params[:sequel_type] end
Public Instance Methods
==(other)
click to toggle source
# File lib/mimi/db/dictate/schema_definition.rb, line 122 def ==(other) unless other.name == name raise ArgumentError, 'Cannot compare columns with different names' end equal = true equal &&= params[:db_type] == other.params[:db_type] equal &&= params[:primary_key] == other.params[:primary_key] equal &&= params[:not_null] == other.params[:not_null] equal &&= params[:db_default].to_s == other.params[:db_default].to_s equal end
to_h()
click to toggle source
# File lib/mimi/db/dictate/schema_definition.rb, line 101 def to_h { name: name, params: params.dup } end
to_s()
click to toggle source
# File lib/mimi/db/dictate/schema_definition.rb, line 114 def to_s public_params = params.only( :type, :primary_key, :auto_increment, :not_null, :default, :size ).select { |_, v| v }.to_h public_params = public_params.map { |k, v| "#{k}: #{v.inspect}" }.join(', ') "#{name}(#{public_params})" end
to_sequel_params()
click to toggle source
# File lib/mimi/db/dictate/schema_definition.rb, line 108 def to_sequel_params p = params.dup.except(:type, :as) p[:null] = !p[:not_null] if p.key?(:not_null) p end