Class: Sequel::Amalgalite::SequelTypeMap

Inherits:
Amalgalite::TypeMaps::DefaultMap
  • Object
show all
Defined in:
lib/sequel/adapters/amalgalite.rb

Overview

Type conversion map class for Sequel’s use of Amalgamite

Instance Method Summary collapse

Constructor Details

#initialize(db) ⇒ SequelTypeMap

Store the related database object, in order to be able to correctly handle the database timezone.



22
23
24
# File 'lib/sequel/adapters/amalgalite.rb', line 22

def initialize(db)
  @db = db
end

Instance Method Details

#blob(s) ⇒ Object

Return blobs as instances of Sequel::SQL::Blob instead of Amalgamite::Blob



28
29
30
# File 'lib/sequel/adapters/amalgalite.rb', line 28

def blob(s)
  SQL::Blob.new(s)
end

#datetime(s) ⇒ Object

Return datetime types as instances of Sequel.datetime_class



39
40
41
# File 'lib/sequel/adapters/amalgalite.rb', line 39

def datetime(s)
  @db.to_application_timestamp(s)
end

#decimal(s) ⇒ Object

Return numeric/decimal types as instances of BigDecimal instead of Float



34
35
36
# File 'lib/sequel/adapters/amalgalite.rb', line 34

def decimal(s)
  BigDecimal.new(s)
end

#result_value_of(declared_type, value) ⇒ Object

Don’t raise an error if the value is a string and the declared type doesn’t match a known type, just return the value.



49
50
51
52
53
54
55
56
57
# File 'lib/sequel/adapters/amalgalite.rb', line 49

def result_value_of(declared_type, value)
  if value.is_a?(::Amalgalite::Blob)
    SQL::Blob.new(value.to_s)
  elsif value.is_a?(String) && declared_type
    (meth = self.class.sql_to_method(declared_type.downcase)) ? send(meth, value) : value
  else
    super
  end
end

#time(s) ⇒ Object



43
44
45
# File 'lib/sequel/adapters/amalgalite.rb', line 43

def time(s)
  Sequel.string_to_time(s)
end