Sha256: 3a3c066905400ecb0f1b215d74cdb94e3d6a434d13dac879f3f811c57dccfb47

Contents?: true

Size: 774 Bytes

Versions: 3

Compression:

Stored size: 774 Bytes

Contents

require_relative "base"

class StoreSchema::Converter::DateTime < StoreSchema::Converter::Base

  # @return [String] the database format for storing a DateTime object.
  #
  DATETIME_DB_FORMAT = "%Y-%m-%d %H:%M:%S.%N"

  # Converts the {#value} to a database-storable value.
  #
  # @return [String, false] false if {#value} is an invalid date-type.
  #
  def to_db
    case value
    when ::DateTime, ::Date
      value.strftime(DATETIME_DB_FORMAT)
    when ::Time
      value.utc.strftime(DATETIME_DB_FORMAT)
    when ::String
      ::DateTime.parse(value).strftime(DATETIME_DB_FORMAT)
    else
      false
    end
  rescue
    false
  end

  # Converts the {#value} to a Ruby-type value.
  #
  # @return [DateTime]
  #
  def from_db
    ::DateTime.parse(value)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
store_schema-1.1.0 lib/store_schema/converter/date_time.rb
store_schema-1.0.1 lib/store_schema/converter/date_time.rb
store_schema-1.0.0 lib/store_schema/converter/date_time.rb