def type_map
length = Property::String::DEFAULT_LENGTH
precision = Property::Numeric::DEFAULT_PRECISION
scale = Property::Decimal::DEFAULT_SCALE
@type_map ||= {
Property::Binary => { :primitive => 'BLOB' },
Object => { :primitive => 'TEXT' },
Integer => { :primitive => 'INTEGER' },
String => { :primitive => 'VARCHAR', :length => length },
Class => { :primitive => 'VARCHAR', :length => length },
BigDecimal => { :primitive => 'DECIMAL', :precision => precision, :scale => scale },
Float => { :primitive => 'FLOAT', :precision => precision },
DateTime => { :primitive => 'TIMESTAMP' },
Date => { :primitive => 'DATE' },
Time => { :primitive => 'TIMESTAMP' },
TrueClass => { :primitive => 'BOOLEAN' },
Property::Text => { :primitive => 'TEXT' },
}.freeze
end