godfat-dm-mapping 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +8 -0
 - data/README +1 -1
 - data/Rakefile +2 -1
 - data/dm-mapping.gemspec +9 -6
 - data/lib/dm-mapping/adapters/abstract_adapter.rb +106 -102
 - data/lib/dm-mapping/adapters/mysql_adapter.rb +56 -52
 - data/lib/dm-mapping/adapters/postgres_adapter.rb +58 -54
 - data/lib/dm-mapping/adapters/sqlite3_adapter.rb +44 -36
 - data/lib/dm-mapping/version.rb +1 -1
 - data/test/test_dm-mapping.rb +0 -1
 - metadata +12 -3
 
    
        data/CHANGES
    CHANGED
    
    | 
         @@ -1,5 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            = dm-mapper changes history
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            === dm-mapping 0.7.1,
         
     | 
| 
      
 4 
     | 
    
         
            +
            don't open module Migration and edit it, instead, use include, more see:
         
     | 
| 
      
 5 
     | 
    
         
            +
            * added DataMapper::Mapping::AbstractAdapter
         
     | 
| 
      
 6 
     | 
    
         
            +
            * added DataMapper::Mapping::Sqlite3Adapter
         
     | 
| 
      
 7 
     | 
    
         
            +
            * added DataMapper::Mapping::MysqlAdapter
         
     | 
| 
      
 8 
     | 
    
         
            +
            * added DataMapper::Mapping::PostgresAdapter
         
     | 
| 
      
 9 
     | 
    
         
            +
            * each adapter was included in related adapter in DataMapper.
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       3 
11 
     | 
    
         
             
            === dm-mapping 0.7.0, 2008-09-01
         
     | 
| 
       4 
12 
     | 
    
         
             
            * feature added
         
     | 
| 
       5 
13 
     | 
    
         
             
             - added postgres support.
         
     | 
    
        data/README
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -12,6 +12,7 @@ PROJ.name = 'dm-mapping' 
     | 
|
| 
       12 
12 
     | 
    
         
             
            PROJ.ruby_opts.delete '-w'
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            PROJ.gem.dependencies << ['dm-core', '>=0.9.3'] << ['extlib', '>=0.9.3']
         
     | 
| 
      
 15 
     | 
    
         
            +
            PROJ.gem.development_dependencies << ['minitest', '>=1.3.0']
         
     | 
| 
       15 
16 
     | 
    
         
             
            # PROJ.gem.executables = ["bin/#{PROJ.name}"]
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
       17 
18 
     | 
    
         
             
            task :default do
         
     | 
| 
         @@ -46,7 +47,7 @@ PROJ.rdoc.main = 'README' 
     | 
|
| 
       46 
47 
     | 
    
         
             
            PROJ.rdoc.exclude += ['Rakefile', '^tasks', '^test']
         
     | 
| 
       47 
48 
     | 
    
         
             
            PROJ.rdoc.include << '\w+'
         
     | 
| 
       48 
49 
     | 
    
         
             
            PROJ.rdoc.opts << '--diagram' if !WIN32 and `which dot` =~ %r/\/dot/
         
     | 
| 
       49 
     | 
    
         
            -
            PROJ.rdoc.opts += ['--charset=utf-8', '--inline-source', 
     | 
| 
      
 50 
     | 
    
         
            +
            PROJ.rdoc.opts += ['--charset=utf-8', '--inline-source',
         
     | 
| 
       50 
51 
     | 
    
         
             
                               '--line-numbers', '--promiscuous']
         
     | 
| 
       51 
52 
     | 
    
         | 
| 
       52 
53 
     | 
    
         
             
            PROJ.spec.opts << '--color'
         
     | 
    
        data/dm-mapping.gemspec
    CHANGED
    
    | 
         @@ -3,11 +3,11 @@ 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       5 
5 
     | 
    
         
             
              s.name = %q{dm-mapping}
         
     | 
| 
       6 
     | 
    
         
            -
              s.version = "0.7. 
     | 
| 
      
 6 
     | 
    
         
            +
              s.version = "0.7.1"
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.authors = ["Lin Jen-Shin (a.k.a. godfat \347\234\237\345\270\270)"]
         
     | 
| 
       10 
     | 
    
         
            -
              s.date = %q{2008- 
     | 
| 
      
 10 
     | 
    
         
            +
              s.date = %q{2008-12-17}
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.description = %q{DataMapper plugin that helps you manipulate an existing database. It creates mappings between existing columns and model's properties.}
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.email = %q{godfat (XD) godfat.org}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.extra_rdoc_files = ["CHANGES", "LICENSE", "NOTICE", "README", "TODO", "dm-mapping.gemspec"]
         
     | 
| 
         @@ -17,7 +17,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       17 
17 
     | 
    
         
             
              s.rdoc_options = ["--diagram", "--charset=utf-8", "--inline-source", "--line-numbers", "--promiscuous", "--main", "README"]
         
     | 
| 
       18 
18 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       19 
19 
     | 
    
         
             
              s.rubyforge_project = %q{ludy}
         
     | 
| 
       20 
     | 
    
         
            -
              s.rubygems_version = %q{1.3. 
     | 
| 
      
 20 
     | 
    
         
            +
              s.rubygems_version = %q{1.3.1}
         
     | 
| 
       21 
21 
     | 
    
         
             
              s.summary = %q{DataMapper plugin that helps you manipulate an existing database. It creates mappings between existing columns and model's properties.}
         
     | 
| 
       22 
22 
     | 
    
         
             
              s.test_files = ["test/test_dm-mapping.rb"]
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
         @@ -28,15 +28,18 @@ Gem::Specification.new do |s| 
     | 
|
| 
       28 
28 
     | 
    
         
             
                if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
         
     | 
| 
       29 
29 
     | 
    
         
             
                  s.add_runtime_dependency(%q<dm-core>, [">= 0.9.3"])
         
     | 
| 
       30 
30 
     | 
    
         
             
                  s.add_runtime_dependency(%q<extlib>, [">= 0.9.3"])
         
     | 
| 
       31 
     | 
    
         
            -
                  s.add_development_dependency(%q<bones>, [">= 2.1. 
     | 
| 
      
 31 
     | 
    
         
            +
                  s.add_development_dependency(%q<bones>, [">= 2.1.1"])
         
     | 
| 
      
 32 
     | 
    
         
            +
                  s.add_development_dependency(%q<minitest>, [">= 1.3.0"])
         
     | 
| 
       32 
33 
     | 
    
         
             
                else
         
     | 
| 
       33 
34 
     | 
    
         
             
                  s.add_dependency(%q<dm-core>, [">= 0.9.3"])
         
     | 
| 
       34 
35 
     | 
    
         
             
                  s.add_dependency(%q<extlib>, [">= 0.9.3"])
         
     | 
| 
       35 
     | 
    
         
            -
                  s.add_dependency(%q<bones>, [">= 2.1. 
     | 
| 
      
 36 
     | 
    
         
            +
                  s.add_dependency(%q<bones>, [">= 2.1.1"])
         
     | 
| 
      
 37 
     | 
    
         
            +
                  s.add_dependency(%q<minitest>, [">= 1.3.0"])
         
     | 
| 
       36 
38 
     | 
    
         
             
                end
         
     | 
| 
       37 
39 
     | 
    
         
             
              else
         
     | 
| 
       38 
40 
     | 
    
         
             
                s.add_dependency(%q<dm-core>, [">= 0.9.3"])
         
     | 
| 
       39 
41 
     | 
    
         
             
                s.add_dependency(%q<extlib>, [">= 0.9.3"])
         
     | 
| 
       40 
     | 
    
         
            -
                s.add_dependency(%q<bones>, [">= 2.1. 
     | 
| 
      
 42 
     | 
    
         
            +
                s.add_dependency(%q<bones>, [">= 2.1.1"])
         
     | 
| 
      
 43 
     | 
    
         
            +
                s.add_dependency(%q<minitest>, [">= 1.3.0"])
         
     | 
| 
       41 
44 
     | 
    
         
             
              end
         
     | 
| 
       42 
45 
     | 
    
         
             
            end
         
     | 
| 
         @@ -2,121 +2,125 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'dm-mapping/type_map'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module DataMapper
         
     | 
| 
       5 
     | 
    
         
            -
              module  
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                     
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                    end
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Mapping
         
     | 
| 
      
 6 
     | 
    
         
            +
                module AbstractAdapter
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # returns all tables' name in the repository.
         
     | 
| 
      
 8 
     | 
    
         
            +
                  #  e.g.
         
     | 
| 
      
 9 
     | 
    
         
            +
                  #       ['comments', 'users']
         
     | 
| 
      
 10 
     | 
    
         
            +
                  def storages
         
     | 
| 
      
 11 
     | 
    
         
            +
                    raise NotImplementedError
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
       14 
13 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
                  # returns all fields, with format [[name, type, attrs]]
         
     | 
| 
      
 15 
     | 
    
         
            +
                  #  e.g.
         
     | 
| 
      
 16 
     | 
    
         
            +
                  #       [[:created_at,  DateTime, {:nullable => true}],
         
     | 
| 
      
 17 
     | 
    
         
            +
                  #        [:email,       String,   {:nullable => true, :size => 255,
         
     | 
| 
      
 18 
     | 
    
         
            +
                  #                                  :default => 'nospam@nospam.tw'}],
         
     | 
| 
      
 19 
     | 
    
         
            +
                  #        [:id,          Integer,  {:nullable => false, :serial => true,
         
     | 
| 
      
 20 
     | 
    
         
            +
                  #                                  :key => true}],
         
     | 
| 
      
 21 
     | 
    
         
            +
                  #        [:salt_first,  String,   {:nullable => true, :size => 50}],
         
     | 
| 
      
 22 
     | 
    
         
            +
                  #        [:salt_second, String,   {:nullable => true, :size => 50}]]
         
     | 
| 
      
 23 
     | 
    
         
            +
                  def fields storage
         
     | 
| 
      
 24 
     | 
    
         
            +
                    dmm_query_storage(storage).map{ |field|
         
     | 
| 
      
 25 
     | 
    
         
            +
                      primitive = dmm_primitive(field)
         
     | 
| 
      
 26 
     | 
    
         
            +
                      type, chain = self.class.type_map.lookup_primitive(primitive) ||
         
     | 
| 
      
 27 
     | 
    
         
            +
                                    dmm_lookup_primitive(primitive)
         
     | 
| 
       29 
28 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
                      [dmm_field_name(field).to_sym, type, dmm_attributes(field)]
         
     | 
| 
      
 30 
     | 
    
         
            +
                    }
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
       33 
32 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
                  # returns a hash with storage names in keys and
         
     | 
| 
      
 34 
     | 
    
         
            +
                  # corresponded fields in values. e.g.
         
     | 
| 
      
 35 
     | 
    
         
            +
                  #   {'users' => [[:id,          Integer,  {:nullable => false,
         
     | 
| 
      
 36 
     | 
    
         
            +
                  #                                          :serial => true,
         
     | 
| 
      
 37 
     | 
    
         
            +
                  #                                          :key => true}],
         
     | 
| 
      
 38 
     | 
    
         
            +
                  #                [:email,       String,   {:nullable => true,
         
     | 
| 
      
 39 
     | 
    
         
            +
                  #                                          :default => 'nospam@nospam.tw'}],
         
     | 
| 
      
 40 
     | 
    
         
            +
                  #                [:created_at,  DateTime, {:nullable => true}],
         
     | 
| 
      
 41 
     | 
    
         
            +
                  #                [:salt_first,  String,   {:nullable => true, :size => 50}],
         
     | 
| 
      
 42 
     | 
    
         
            +
                  #                [:salt_second, String,   {:nullable => true, :size => 50}]]}
         
     | 
| 
      
 43 
     | 
    
         
            +
                  # see Migration#storages and Migration#fields for detail
         
     | 
| 
      
 44 
     | 
    
         
            +
                  def storages_and_fields
         
     | 
| 
      
 45 
     | 
    
         
            +
                    storages.inject({}){ |result, storage|
         
     | 
| 
      
 46 
     | 
    
         
            +
                      result[storage] = fields(storage)
         
     | 
| 
      
 47 
     | 
    
         
            +
                      result
         
     | 
| 
      
 48 
     | 
    
         
            +
                    }
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
       51 
50 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
                  # automaticly generate model class(es) and mapping
         
     | 
| 
      
 52 
     | 
    
         
            +
                  # all fields with mapping /.*/ for you.
         
     | 
| 
      
 53 
     | 
    
         
            +
                  #  e.g.
         
     | 
| 
      
 54 
     | 
    
         
            +
                  #       dm.auto_genclass!
         
     | 
| 
      
 55 
     | 
    
         
            +
                  #       # => [DataMapper::Mapping::User,
         
     | 
| 
      
 56 
     | 
    
         
            +
                  #       #     DataMapper::Mapping::SchemaInfo,
         
     | 
| 
      
 57 
     | 
    
         
            +
                  #       #     DataMapper::Mapping::Session]
         
     | 
| 
      
 58 
     | 
    
         
            +
                  #
         
     | 
| 
      
 59 
     | 
    
         
            +
                  # you can change the scope of generated models:
         
     | 
| 
      
 60 
     | 
    
         
            +
                  #  e.g.
         
     | 
| 
      
 61 
     | 
    
         
            +
                  #       dm.auto_genclass! :scope => Object
         
     | 
| 
      
 62 
     | 
    
         
            +
                  #       # => [User, SchemaInfo, Session]
         
     | 
| 
      
 63 
     | 
    
         
            +
                  #
         
     | 
| 
      
 64 
     | 
    
         
            +
                  # you can generate classes for tables you specified only:
         
     | 
| 
      
 65 
     | 
    
         
            +
                  #  e.g.
         
     | 
| 
      
 66 
     | 
    
         
            +
                  #       dm.auto_genclass! :scope => Object, :storages => /^phpbb_/
         
     | 
| 
      
 67 
     | 
    
         
            +
                  #       # => [PhpbbUser, PhpbbPost, PhpbbConfig]
         
     | 
| 
      
 68 
     | 
    
         
            +
                  #
         
     | 
| 
      
 69 
     | 
    
         
            +
                  # you can generate classes with String too:
         
     | 
| 
      
 70 
     | 
    
         
            +
                  #  e.g.
         
     | 
| 
      
 71 
     | 
    
         
            +
                  #       dm.auto_genclass! :storages => ['users', 'config'], :scope => Object
         
     | 
| 
      
 72 
     | 
    
         
            +
                  #       # => [User, Config]
         
     | 
| 
      
 73 
     | 
    
         
            +
                  #
         
     | 
| 
      
 74 
     | 
    
         
            +
                  # you can generate a class only:
         
     | 
| 
      
 75 
     | 
    
         
            +
                  #  e.g.
         
     | 
| 
      
 76 
     | 
    
         
            +
                  #       dm.auto_genclass! :storages => 'users'
         
     | 
| 
      
 77 
     | 
    
         
            +
                  #       # => [DataMapper::Mapping::User]
         
     | 
| 
      
 78 
     | 
    
         
            +
                  def auto_genclass! opts = {}
         
     | 
| 
      
 79 
     | 
    
         
            +
                    opts[:scope] ||= DataMapper::Mapping
         
     | 
| 
      
 80 
     | 
    
         
            +
                    opts[:storages] ||= /.*/
         
     | 
| 
      
 81 
     | 
    
         
            +
                    opts[:storages] = [opts[:storages]].flatten
         
     | 
| 
       83 
82 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
      
 83 
     | 
    
         
            +
                    storages.map{ |storage|
         
     | 
| 
       85 
84 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
      
 85 
     | 
    
         
            +
                      mapped = opts[:storages].each{ |target|
         
     | 
| 
      
 86 
     | 
    
         
            +
                        case target
         
     | 
| 
      
 87 
     | 
    
         
            +
                          when Regexp;
         
     | 
| 
      
 88 
     | 
    
         
            +
                            break storage if storage =~ target
         
     | 
| 
       90 
89 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
      
 90 
     | 
    
         
            +
                          when Symbol, String;
         
     | 
| 
      
 91 
     | 
    
         
            +
                            break storage if storage == target.to_s
         
     | 
| 
       93 
92 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
                          else
         
     | 
| 
      
 94 
     | 
    
         
            +
                            raise ArgumentError.new("invalid argument: #{target.inspect}")
         
     | 
| 
      
 95 
     | 
    
         
            +
                        end
         
     | 
| 
      
 96 
     | 
    
         
            +
                      }
         
     | 
| 
       98 
97 
     | 
    
         | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
      
 98 
     | 
    
         
            +
                      dmm_genclass mapped, opts[:scope] if mapped.kind_of?(String)
         
     | 
| 
      
 99 
     | 
    
         
            +
                    }.compact
         
     | 
| 
      
 100 
     | 
    
         
            +
                  end
         
     | 
| 
       102 
101 
     | 
    
         | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
      
 102 
     | 
    
         
            +
                  private
         
     | 
| 
      
 103 
     | 
    
         
            +
                  def dmm_query_storage
         
     | 
| 
      
 104 
     | 
    
         
            +
                    raise NotImplementError.new("#{self.class}#fields is not implemented.")
         
     | 
| 
      
 105 
     | 
    
         
            +
                  end
         
     | 
| 
       107 
106 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
      
 107 
     | 
    
         
            +
                  def dmm_genclass storage, scope
         
     | 
| 
      
 108 
     | 
    
         
            +
                    model = Class.new
         
     | 
| 
      
 109 
     | 
    
         
            +
                    model.__send__ :include, DataMapper::Resource
         
     | 
| 
      
 110 
     | 
    
         
            +
                    model.storage_names[:default] = storage
         
     | 
| 
      
 111 
     | 
    
         
            +
                    model.__send__ :mapping, /.*/
         
     | 
| 
      
 112 
     | 
    
         
            +
                    scope.const_set(Extlib::Inflection.classify(storage), model)
         
     | 
| 
      
 113 
     | 
    
         
            +
                  end
         
     | 
| 
       115 
114 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
                  def dmm_lookup_primitive primitive
         
     | 
| 
      
 116 
     | 
    
         
            +
                    raise TypeError.new("#{primitive} not found for #{self.class}")
         
     | 
| 
       119 
117 
     | 
    
         
             
                  end
         
     | 
| 
       120 
118 
     | 
    
         
             
                end
         
     | 
| 
       121 
119 
     | 
    
         
             
              end
         
     | 
| 
       122 
120 
     | 
    
         
             
            end
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 123 
     | 
    
         
            +
              module Adapters
         
     | 
| 
      
 124 
     | 
    
         
            +
                AbstractAdapter.send(:include, Mapping::AbstractAdapter)
         
     | 
| 
      
 125 
     | 
    
         
            +
              end
         
     | 
| 
      
 126 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -2,59 +2,63 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'dm-mapping/adapters/abstract_adapter'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module DataMapper
         
     | 
| 
       5 
     | 
    
         
            -
              module  
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
       8 
     | 
    
         
            -
                     
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                     
     | 
| 
       15 
     | 
    
         
            -
                       
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                     
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                     
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                     
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                      super(primitive)
         
     | 
| 
       56 
     | 
    
         
            -
                    end
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Mapping
         
     | 
| 
      
 6 
     | 
    
         
            +
                module MysqlAdapter
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def storages
         
     | 
| 
      
 8 
     | 
    
         
            +
                    query 'SHOW TABLES'
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                  private
         
     | 
| 
      
 12 
     | 
    
         
            +
                  # construct needed table metadata
         
     | 
| 
      
 13 
     | 
    
         
            +
                  def dmm_query_storage storage
         
     | 
| 
      
 14 
     | 
    
         
            +
                    sql = <<-SQL.compress_lines
         
     | 
| 
      
 15 
     | 
    
         
            +
                      SELECT column_name, column_default, is_nullable, data_type,
         
     | 
| 
      
 16 
     | 
    
         
            +
                             character_maximum_length, column_key, extra
         
     | 
| 
      
 17 
     | 
    
         
            +
                      FROM `information_schema`.`columns`
         
     | 
| 
      
 18 
     | 
    
         
            +
                      WHERE `table_schema` = ? AND `table_name` = ?
         
     | 
| 
      
 19 
     | 
    
         
            +
                    SQL
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    query(sql, db_name, storage)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def dmm_field_name field
         
     | 
| 
      
 25 
     | 
    
         
            +
                    field.column_name
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def dmm_primitive field
         
     | 
| 
      
 29 
     | 
    
         
            +
                    field.data_type
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  def dmm_attributes field, attrs = {}
         
     | 
| 
      
 33 
     | 
    
         
            +
                      attrs[:serial] = true if field.extra == 'auto_increment'
         
     | 
| 
      
 34 
     | 
    
         
            +
                      attrs[:key] = true if field.column_key != ''
         
     | 
| 
      
 35 
     | 
    
         
            +
                      attrs[:nullable] = field.is_nullable == 'YES'
         
     | 
| 
      
 36 
     | 
    
         
            +
                      attrs[:default] = field.column_default if field.column_default
         
     | 
| 
      
 37 
     | 
    
         
            +
                      attrs[:size] = field.character_maximum_length if
         
     | 
| 
      
 38 
     | 
    
         
            +
                        field.character_maximum_length
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                      attrs
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  def dmm_lookup_primitive primitive
         
     | 
| 
      
 44 
     | 
    
         
            +
                    p = primitive.upcase
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                    return Integer    if p == 'YEAR'
         
     | 
| 
      
 47 
     | 
    
         
            +
                    return Integer    if p =~          /\w*INT(EGER)?( SIGNED| UNSIGNED)?( ZEROFILL)?/
         
     | 
| 
      
 48 
     | 
    
         
            +
                    return BigDecimal if p =~ /(DOUBLE|FLOAT|DECIMAL)( SIGNED| UNSIGNED)?( ZEROFILL)?/
         
     | 
| 
      
 49 
     | 
    
         
            +
                    return String     if p =~ /\w*BLOB|\w*BINARY|ENUM|SET|CHAR/
         
     | 
| 
      
 50 
     | 
    
         
            +
                    return DM::Text   if p =~ /\w*TEXT/
         
     | 
| 
      
 51 
     | 
    
         
            +
                    return TrueClass  if %w[BOOL BOOLEAN].member?(p)
         
     | 
| 
      
 52 
     | 
    
         
            +
                    return Time       if p == 'TIME'
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                    super(primitive)
         
     | 
| 
       57 
55 
     | 
    
         
             
                  end
         
     | 
| 
       58 
56 
     | 
    
         
             
                end
         
     | 
| 
       59 
57 
     | 
    
         
             
              end
         
     | 
| 
       60 
58 
     | 
    
         
             
            end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 61 
     | 
    
         
            +
              module Adapters
         
     | 
| 
      
 62 
     | 
    
         
            +
                MysqlAdapter.send(:include, Mapping::MysqlAdapter)
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -2,72 +2,76 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'dm-mapping/adapters/abstract_adapter'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module DataMapper
         
     | 
| 
       5 
     | 
    
         
            -
              module  
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
       8 
     | 
    
         
            -
                     
     | 
| 
       9 
     | 
    
         
            -
                       
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                      SQL
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                      query(sql)
         
     | 
| 
       15 
     | 
    
         
            -
                    end
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Mapping
         
     | 
| 
      
 6 
     | 
    
         
            +
                module PostgresAdapter
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def storages
         
     | 
| 
      
 8 
     | 
    
         
            +
                    sql = <<-SQL.compress_lines
         
     | 
| 
      
 9 
     | 
    
         
            +
                      SELECT table_name FROM "information_schema"."tables"
         
     | 
| 
      
 10 
     | 
    
         
            +
                      WHERE table_schema = current_schema()
         
     | 
| 
      
 11 
     | 
    
         
            +
                    SQL
         
     | 
| 
       16 
12 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                     
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                      sql = <<-SQL.compress_lines
         
     | 
| 
       20 
     | 
    
         
            -
                        SELECT column_name FROM "information_schema"."key_column_usage"
         
     | 
| 
       21 
     | 
    
         
            -
                        WHERE table_schema = current_schema() AND table_name = ?
         
     | 
| 
       22 
     | 
    
         
            -
                      SQL
         
     | 
| 
      
 13 
     | 
    
         
            +
                    query(sql)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
       23 
15 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                  private
         
     | 
| 
      
 17 
     | 
    
         
            +
                  def dmm_query_storage storage
         
     | 
| 
      
 18 
     | 
    
         
            +
                    sql = <<-SQL.compress_lines
         
     | 
| 
      
 19 
     | 
    
         
            +
                      SELECT column_name FROM "information_schema"."key_column_usage"
         
     | 
| 
      
 20 
     | 
    
         
            +
                      WHERE table_schema = current_schema() AND table_name = ?
         
     | 
| 
      
 21 
     | 
    
         
            +
                    SQL
         
     | 
| 
       25 
22 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                        SELECT column_name, column_default, is_nullable,
         
     | 
| 
       28 
     | 
    
         
            -
                               character_maximum_length, udt_name
         
     | 
| 
       29 
     | 
    
         
            -
                        FROM "information_schema"."columns"
         
     | 
| 
       30 
     | 
    
         
            -
                        WHERE table_schema = current_schema() AND table_name = ?
         
     | 
| 
       31 
     | 
    
         
            -
                      SQL
         
     | 
| 
      
 23 
     | 
    
         
            +
                    keys = query(sql, storage).to_set
         
     | 
| 
       32 
24 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                        struct
         
     | 
| 
       40 
     | 
    
         
            -
                      }
         
     | 
| 
       41 
     | 
    
         
            -
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                    sql = <<-SQL.compress_lines
         
     | 
| 
      
 26 
     | 
    
         
            +
                      SELECT column_name, column_default, is_nullable,
         
     | 
| 
      
 27 
     | 
    
         
            +
                             character_maximum_length, udt_name
         
     | 
| 
      
 28 
     | 
    
         
            +
                      FROM "information_schema"."columns"
         
     | 
| 
      
 29 
     | 
    
         
            +
                      WHERE table_schema = current_schema() AND table_name = ?
         
     | 
| 
      
 30 
     | 
    
         
            +
                    SQL
         
     | 
| 
       42 
31 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                     
     | 
| 
       44 
     | 
    
         
            -
                       
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
                    query(sql, storage).map{ |struct|
         
     | 
| 
      
 33 
     | 
    
         
            +
                      struct.instance_eval <<-END_EVAL
         
     | 
| 
      
 34 
     | 
    
         
            +
                        def key?
         
     | 
| 
      
 35 
     | 
    
         
            +
                          #{keys.member?(struct.column_name)}
         
     | 
| 
      
 36 
     | 
    
         
            +
                        end
         
     | 
| 
      
 37 
     | 
    
         
            +
                      END_EVAL
         
     | 
| 
      
 38 
     | 
    
         
            +
                      struct
         
     | 
| 
      
 39 
     | 
    
         
            +
                    }
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
       46 
41 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
                  def dmm_field_name field
         
     | 
| 
      
 43 
     | 
    
         
            +
                    field.column_name
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
       50 
45 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 46 
     | 
    
         
            +
                  def dmm_primitive field
         
     | 
| 
      
 47 
     | 
    
         
            +
                    field.udt_name
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
       54 
49 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                      # strip string quotation
         
     | 
| 
       59 
     | 
    
         
            -
                      attrs[:default] = field.column_default.gsub(/^'(.*?)'$/, '\1') if
         
     | 
| 
       60 
     | 
    
         
            -
                        field.column_default && !attrs[:serial]
         
     | 
| 
      
 50 
     | 
    
         
            +
                  def dmm_attributes field, attrs = {}
         
     | 
| 
      
 51 
     | 
    
         
            +
                    # strip data type
         
     | 
| 
      
 52 
     | 
    
         
            +
                    field.column_default.gsub!(/(.*?)::[\w\s]*/, '\1') if field.column_default
         
     | 
| 
       61 
53 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 54 
     | 
    
         
            +
                    attrs[:serial] = true if field.column_default =~ /nextval\('\w+_seq'\)/
         
     | 
| 
      
 55 
     | 
    
         
            +
                    attrs[:key] = true if field.key?
         
     | 
| 
      
 56 
     | 
    
         
            +
                    attrs[:nullable] = field.is_nullable == 'YES'
         
     | 
| 
      
 57 
     | 
    
         
            +
                    # strip string quotation
         
     | 
| 
      
 58 
     | 
    
         
            +
                    attrs[:default] = field.column_default.gsub(/^'(.*?)'$/, '\1') if
         
     | 
| 
      
 59 
     | 
    
         
            +
                      field.column_default && !attrs[:serial]
         
     | 
| 
       67 
60 
     | 
    
         | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 61 
     | 
    
         
            +
                    if field.character_maximum_length
         
     | 
| 
      
 62 
     | 
    
         
            +
                      attrs[:size] = field.character_maximum_length
         
     | 
| 
      
 63 
     | 
    
         
            +
                    elsif field.udt_name.upcase == 'TEXT'
         
     | 
| 
      
 64 
     | 
    
         
            +
                      attrs[:size] = DM::Text.size
         
     | 
| 
       69 
65 
     | 
    
         
             
                    end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                    attrs
         
     | 
| 
       70 
68 
     | 
    
         
             
                  end
         
     | 
| 
       71 
69 
     | 
    
         
             
                end
         
     | 
| 
       72 
70 
     | 
    
         
             
              end
         
     | 
| 
       73 
71 
     | 
    
         
             
            end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 74 
     | 
    
         
            +
              module Adapters
         
     | 
| 
      
 75 
     | 
    
         
            +
                PostgresAdapter.send(:include, Mapping::PostgresAdapter)
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -2,50 +2,58 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'dm-mapping/adapters/abstract_adapter'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module DataMapper
         
     | 
| 
       5 
     | 
    
         
            -
              module  
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
       8 
     | 
    
         
            -
                    def storages
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Mapping
         
     | 
| 
      
 6 
     | 
    
         
            +
                module Sqlite3Adapter
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def storages
         
     | 
| 
       9 
8 
     | 
    
         
             
            # activerecord-2.1.0/lib/active_record/connection_adapters/sqlite_adapter.rb: 177
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                    sql = <<-SQL.compress_lines
         
     | 
| 
      
 10 
     | 
    
         
            +
                      SELECT name
         
     | 
| 
      
 11 
     | 
    
         
            +
                      FROM sqlite_master
         
     | 
| 
      
 12 
     | 
    
         
            +
                      WHERE type = 'table' AND NOT name = 'sqlite_sequence'
         
     | 
| 
      
 13 
     | 
    
         
            +
                    SQL
         
     | 
| 
       15 
14 
     | 
    
         
             
            # activerecord-2.1.0/lib/active_record/connection_adapters/sqlite_adapter.rb: 181
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                    query sql
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
                  private
         
     | 
| 
      
 20 
     | 
    
         
            +
                  # alias_method :dmm_query_storages, :query_table
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def dmm_query_storage *args, &block
         
     | 
| 
      
 22 
     | 
    
         
            +
                    query_table(*args, &block)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
       25 
24 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
                  def dmm_field_name field
         
     | 
| 
      
 26 
     | 
    
         
            +
                    field.name
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  def dmm_primitive field
         
     | 
| 
      
 30 
     | 
    
         
            +
                    field.type.gsub(/\(\d+\)/, '')
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
       29 
32 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                      end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                      attrs
         
     | 
| 
      
 33 
     | 
    
         
            +
                  def dmm_attributes field, attrs = {}
         
     | 
| 
      
 34 
     | 
    
         
            +
                    if field.pk != 0
         
     | 
| 
      
 35 
     | 
    
         
            +
                      attrs[:key] = true
         
     | 
| 
      
 36 
     | 
    
         
            +
                      attrs[:serial] = true if supports_serial?
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
      
 38 
     | 
    
         
            +
                    attrs[:nullable] = field.notnull != 99
         
     | 
| 
      
 39 
     | 
    
         
            +
                    attrs[:default] = field.dflt_value[1..-2] if field.dflt_value
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                    if field.type.upcase == 'TEXT'
         
     | 
| 
      
 42 
     | 
    
         
            +
                      attrs[:size] = DM::Text.size
         
     | 
| 
      
 43 
     | 
    
         
            +
                    else
         
     | 
| 
      
 44 
     | 
    
         
            +
                      ergo = field.type.match(/\((\d+)\)/)
         
     | 
| 
      
 45 
     | 
    
         
            +
                      size = ergo && ergo[1].to_i
         
     | 
| 
      
 46 
     | 
    
         
            +
                      attrs[:size] = size if size
         
     | 
| 
       47 
47 
     | 
    
         
             
                    end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    attrs
         
     | 
| 
       48 
50 
     | 
    
         
             
                  end
         
     | 
| 
       49 
51 
     | 
    
         
             
                end
         
     | 
| 
       50 
52 
     | 
    
         
             
              end
         
     | 
| 
       51 
53 
     | 
    
         
             
            end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
            module DataMapper
         
     | 
| 
      
 56 
     | 
    
         
            +
              module Adapters
         
     | 
| 
      
 57 
     | 
    
         
            +
                Sqlite3Adapter.send(:include, Mapping::Sqlite3Adapter)
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/dm-mapping/version.rb
    CHANGED
    
    
    
        data/test/test_dm-mapping.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: godfat-dm-mapping
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.7. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.7.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - "Lin Jen-Shin (a.k.a. godfat \xE7\x9C\x9F\xE5\xB8\xB8)"
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date: 2008- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2008-12-17 00:00:00 -08:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -37,7 +37,16 @@ dependencies: 
     | 
|
| 
       37 
37 
     | 
    
         
             
                requirements: 
         
     | 
| 
       38 
38 
     | 
    
         
             
                - - ">="
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       40 
     | 
    
         
            -
                    version: 2.1. 
     | 
| 
      
 40 
     | 
    
         
            +
                    version: 2.1.1
         
     | 
| 
      
 41 
     | 
    
         
            +
                version: 
         
     | 
| 
      
 42 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 43 
     | 
    
         
            +
              name: minitest
         
     | 
| 
      
 44 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 45 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 46 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 47 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 48 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 49 
     | 
    
         
            +
                    version: 1.3.0
         
     | 
| 
       41 
50 
     | 
    
         
             
                version: 
         
     | 
| 
       42 
51 
     | 
    
         
             
            description: DataMapper plugin that helps you manipulate an existing database. It creates mappings between existing columns and model's properties.
         
     | 
| 
       43 
52 
     | 
    
         
             
            email: godfat (XD) godfat.org
         
     |