Sha256: 01e7d65828c350e5eadbb7a927a44b84214c6d65d58d3094f1a9108cadf8035c

Contents?: true

Size: 1.5 KB

Versions: 8

Compression:

Stored size: 1.5 KB

Contents

module Valle
  module AbstractAdapter
    class ColumnWrapper

      class << self

        ##
        # Wraps original column
        #
        # @param [ActiveRecord::ConnectionAdapters::Column] original_column the original column
        #
        def wrap(original_column)
          case
          when limit_in_bytes?(original_column)
            ByteLimitedColumn.new(original_column)
          when limit_in_characters?(original_column)
            CharacterLimitedColumn.new(original_column)
          else
            UnlimitedColumn.new(original_column)
          end
        end

        private

        ##
        # Determines whether the limit's method returned value is count of bytes
        #
        # Limit is number of bytes for :binary and :integer columns.
        # @see http://apidock.com/rails/ActiveRecord/ConnectionAdapters/TableDefinition/column
        #
        def limit_in_bytes?(column)
          case column.type
          when :primary_key; true
          when :integer; true
          else false
          end
        end

        ##
        # Determines whether the limit's method returned value is count of characters
        #
        # Limit is number of characters for :string and :text columns
        # @see http://apidock.com/rails/ActiveRecord/ConnectionAdapters/TableDefinition/column
        #
        def limit_in_characters?(column)
          case column.type
          when :string; true
          when :text; true
          else false
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
valle-1.1.2 lib/valle/abstract_adapter/column_wrapper.rb
valle-1.1.1 lib/valle/abstract_adapter/column_wrapper.rb
valle-1.1.0 lib/valle/abstract_adapter/column_wrapper.rb
valle-1.0.1 lib/valle/abstract_adapter/column_wrapper.rb
valle-1.0.0 lib/valle/abstract_adapter/column_wrapper.rb
valle-0.2.3 lib/valle/abstract_adapter/column_wrapper.rb
valle-0.2.2 lib/valle/abstract_adapter/column_wrapper.rb
valle-0.2.1 lib/valle/abstract_adapter/column_wrapper.rb