Sha256: 122945b0f0f6e5991a3149e4de433c3066dd13fbc25d6ab9135f498fce3c9c88
Contents?: true
Size: 1.15 KB
Versions: 11
Compression:
Stored size: 1.15 KB
Contents
# frozen_string_literal: true module Motor module ActiveRecordUtils module Types MUTEX = Mutex.new DEFAULT_TYPE = 'string' UNIFIED_TYPES = { 'smallint' => 'integer', 'int' => 'integer', 'int8' => 'integer', 'int16' => 'integer', 'bigint' => 'integer', 'numeric' => 'float', 'decimal' => 'float', 'text' => 'string', 'citext' => 'string', 'jsonb' => 'json', 'timestamp' => 'datetime' }.freeze module_function def all @all || MUTEX.synchronize do @all ||= build_types_hash end end def find_class_for_name(name) all.invert[name.to_s] end def find_name_for_class(klass) name = all[klass.to_s] return UNIFIED_TYPES.fetch(name, name) if name DEFAULT_TYPE end def build_types_hash type_map = ActiveRecord::Base.connection.send(:type_map) type_map.instance_variable_get('@mapping').map do |name, type| next unless name.is_a?(String) [type.call.class.to_s, name] end.compact.to_h end end end end
Version data entries
11 entries across 11 versions & 1 rubygems