Sha256: 7efa667f510b7932bd30b355ee5b2e333b2c9c3f40eca7be0ad2e01e8f1b2652

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

class StoreSchema::Converter
  require_relative "converter/string"
  require_relative "converter/integer"
  require_relative "converter/float"
  require_relative "converter/date_time"
  require_relative "converter/boolean"

  # @return [Hash] a mapping between the configuration block
  #   and the converter classes.
  #
  MAPPING = {
    :string   => String,
    :integer  => Integer,
    :float    => Float,
    :datetime => DateTime,
    :boolean  => Boolean,
  }

  # @return [Object]
  #
  attr_reader :value

  # @return [Symbol]
  #
  attr_reader :type

  # @param value [Object] any kind of value that should be stored
  # @param type [Symbol] the type of the value
  #
  def initialize(value, type)
    @value = value
    @type  = type
  end

  # Converts {#value} from a Ruby-type value to a database-storable value.
  #
  # @return [String]
  #
  def to_db
    MAPPING[type].new(value).to_db
  end

  # Converts {#value} from a database-storable value to a Ruby-type value.
  #
  # @return [Object]
  #
  def from_db
    MAPPING[type].new(value).from_db
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
store_schema-2.0.0 lib/store_schema/converter.rb
store_schema-1.1.1 lib/store_schema/converter.rb