Sha256: f401fab1b12c80e0b08e9b67babdc2177d1f249a3950236b092257e463e73673
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
module DataMapper module Is::Reflective module SqliteAdapter include DataMapper def storages sql = <<-SQL SELECT name FROM sqlite_master WHERE type = 'table' AND NOT name = 'sqlite_sequence' SQL select(Ext::String.compress_lines(sql)) end private def reflective_query_storage storage select('PRAGMA table_info(?)', storage) end def reflective_field_name field field.name end def reflective_primitive field field.type.gsub(/\(\d+\)/, '') end def reflective_attributes field, attrs = {} if field.pk != 0 attrs[:key] = true attrs[:serial] = true if supports_serial? end attrs[:allow_nil] = field.notnull == 0 attrs[:default] = field.dflt_value[1..-2] if field.dflt_value if field.type.upcase == 'TEXT' attrs[:length] = Property::Text.length else ergo = field.type.match(/\((\d+)\)/) size = ergo && ergo[1].to_i attrs[:length] = size if size end attrs end def reflective_lookup_primitive primitive case primitive.upcase when 'INTEGER' ; Integer when 'REAL', 'NUMERIC'; Float when 'VARCHAR' ; String when 'TIMESTAMP' ; DateTime when 'BOOLEAN' ; Property::Boolean when 'TEXT' ; Property::Text end || super(primitive) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dm-is-reflective-1.1.0 | lib/dm-is-reflective/is/adapters/sqlite_adapter.rb |