dm-filemaker-adapter 0.0.4 → 0.0.5
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.
- checksums.yaml +8 -8
 - data/Gemfile +1 -1
 - data/dm-filemaker-adapter.gemspec +1 -1
 - data/lib/dm-filemaker-adapter/adapter.rb +1 -4
 - data/lib/dm-filemaker-adapter/core_patches.rb +31 -14
 - data/lib/dm-filemaker-adapter/version.rb +1 -1
 - metadata +6 -6
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            !binary "U0hBMQ==":
         
     | 
| 
       3 
3 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                ZDRmNWUzZGU0Mzk5MGU5OTYwMmUxMGQ0ODdhZGViYTEwYTI1OWIwYQ==
         
     | 
| 
       5 
5 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                ZTk4ZWM3ODc2MmRlYmIxOWJjZmFiZGYxMzUwNTk1OTYyODdiYzMyZA==
         
     | 
| 
       7 
7 
     | 
    
         
             
            SHA512:
         
     | 
| 
       8 
8 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                MWVhYmQ3MjYwZmMxMzdiNTBhZGE1ODEwODVkOGMzM2Q0Y2FlMzRiODA5ZjBh
         
     | 
| 
      
 10 
     | 
    
         
            +
                ZDBhMDVmZTIzODYwOTQ5YjFlMzIwNjc4ZDBhZjA4YjEwNTkzYTFjNzFhOTg0
         
     | 
| 
      
 11 
     | 
    
         
            +
                N2VlNDRhZDlkMDkxYjk0OTA1NTUzMjFlZDBhNGQ2MGFiNzM0YTI=
         
     | 
| 
       12 
12 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                NWI3ZTBmZTdiM2UwMTJlZmRlZDNlYThlYzEzMTA4MWY1MzRmM2U2ZGIwNzM2
         
     | 
| 
      
 14 
     | 
    
         
            +
                NjY3MzRhZmMwZmU2YTU0Yzk1ODE3N2Q3OTJhODMyOTQ1OGZhNGQyYTdmZTU3
         
     | 
| 
      
 15 
     | 
    
         
            +
                M2UyMmNhYTllZThjYzExMTI3NmM1ODM1OWNiZjUyNGVlNDY2ODE=
         
     | 
    
        data/Gemfile
    CHANGED
    
    
| 
         @@ -19,7 +19,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       19 
19 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
              spec.add_dependency "data_mapper"
         
     | 
| 
       22 
     | 
    
         
            -
              spec.add_dependency "ginjo-rfm"
         
     | 
| 
      
 22 
     | 
    
         
            +
              spec.add_dependency "ginjo-rfm", '~> 3.0'
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
              spec.add_development_dependency "bundler"
         
     | 
| 
       25 
25 
     | 
    
         
             
              spec.add_development_dependency "rake"
         
     | 
| 
         @@ -6,6 +6,7 @@ module DataMapper 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                class FilemakerAdapter < AbstractAdapter
         
     | 
| 
       8 
8 
     | 
    
         
             
                  VERSION = DataMapper::FilemakerAdapter::VERSION
         
     | 
| 
      
 9 
     | 
    
         
            +
                  
         
     | 
| 
       9 
10 
     | 
    
         
             
                  FMRESULTSET_TEMPLATE = {:template => File.expand_path('../dm-fmresultset.yml', __FILE__)}
         
     | 
| 
       10 
11 
     | 
    
         | 
| 
       11 
12 
     | 
    
         | 
| 
         @@ -228,10 +229,6 @@ module DataMapper 
     | 
|
| 
       228 
229 
     | 
    
         
             
                    def layout
         
     | 
| 
       229 
230 
     | 
    
         
             
                      @layout ||= Rfm.layout(storage_name, repository.adapter.options.merge(FMRESULTSET_TEMPLATE).symbolize_keys)
         
     | 
| 
       230 
231 
     | 
    
         
             
                    end
         
     | 
| 
       231 
     | 
    
         
            -
                    
         
     | 
| 
       232 
     | 
    
         
            -
                    # Not how to do this. Doesn't work anywhere I've tried it:
         
     | 
| 
       233 
     | 
    
         
            -
            				#extend Forwardable
         
     | 
| 
       234 
     | 
    
         
            -
            				#def_delegators :layout, *layout.class.instance_methods.select {|m| m.to_s[/^[a-z]/]}
         
     | 
| 
       235 
232 
     | 
    
         
             
                  end
         
     | 
| 
       236 
233 
     | 
    
         | 
| 
       237 
234 
     | 
    
         
             
                  # Instance methods included in model.
         
     | 
| 
         @@ -139,6 +139,20 @@ module DataMapper 
     | 
|
| 
       139 
139 
     | 
    
         
             
            end # DataMapper
         
     | 
| 
       140 
140 
     | 
    
         | 
| 
       141 
141 
     | 
    
         
             
            module Rfm
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            	# Monkey patch for Rfm <= v3.0.8. (Rfm v1 or v2 will not work for DM)
         
     | 
| 
      
 144 
     | 
    
         
            +
            	if (Rfm::VERSION.major.to_i == 3 and Rfm::VERSION.minor.to_i < 1 and Rfm::VERSION.patch.to_i < 9)
         
     | 
| 
      
 145 
     | 
    
         
            +
            		Rfm::Connection.class_eval do
         
     | 
| 
      
 146 
     | 
    
         
            +
            			Rfm::SaxParser::TEMPLATE_PREFIX.replace ''
         
     | 
| 
      
 147 
     | 
    
         
            +
            			alias_method :parse_original, :parse
         
     | 
| 
      
 148 
     | 
    
         
            +
            			def parse(*args)
         
     | 
| 
      
 149 
     | 
    
         
            +
            				args[0] = DataMapper::Adapters::FilemakerAdapter::FMRESULTSET_TEMPLATE[:template]
         
     | 
| 
      
 150 
     | 
    
         
            +
            				parse_original(*args)
         
     | 
| 
      
 151 
     | 
    
         
            +
            			end
         
     | 
| 
      
 152 
     | 
    
         
            +
            		end
         
     | 
| 
      
 153 
     | 
    
         
            +
            	end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
       142 
156 
     | 
    
         
             
            	class Resultset
         
     | 
| 
       143 
157 
     | 
    
         | 
| 
       144 
158 
     | 
    
         
             
            	  # Does custom processing during each record-to-resource translation done in DataMapper::Model#load
         
     | 
| 
         @@ -152,27 +166,30 @@ module Rfm 
     | 
|
| 
       152 
166 
     | 
    
         
             
            					#puts "MODEL#LOAD custom processing RECORD #{record.class} RESOURCE #{resource.class}"
         
     | 
| 
       153 
167 
     | 
    
         
             
            					#puts record.inspect
         
     | 
| 
       154 
168 
     | 
    
         
             
            	        # For Testing:
         
     | 
| 
       155 
     | 
    
         
            -
            	         
     | 
| 
      
 169 
     | 
    
         
            +
            	        resource.instance_variable_set(:@record, record)
         
     | 
| 
       156 
170 
     | 
    
         
             
            	        # WBR - Loads portal data into DM model attached to this resource.
         
     | 
| 
       157 
171 
     | 
    
         
             
            	        portals = record.instance_variable_get(:@portals)
         
     | 
| 
       158 
     | 
    
         
            -
            	        #puts "MODEL#LOAD record #{record.class} portals #{portals.keys rescue 'no portals'}"
         
     | 
| 
      
 172 
     | 
    
         
            +
            	        #puts "MODEL#LOAD record: #{record.class} portals: #{portals.keys rescue 'no portals'}"
         
     | 
| 
       159 
173 
     | 
    
         
             
            	        #if record.respond_to?(:portals) && record.portals.kind_of?(Hash) && record.portals.any?
         
     | 
| 
       160 
174 
     | 
    
         
             
            	        model = resource.class
         
     | 
| 
      
 175 
     | 
    
         
            +
            	        return unless model.kind_of?(DataMapper::Model)
         
     | 
| 
      
 176 
     | 
    
         
            +
            	        #puts "MODEL#LOAD resource class: #{model}"
         
     | 
| 
       161 
177 
     | 
    
         
             
            	        if portals.kind_of?(Hash) && portals.any?
         
     | 
| 
       162 
178 
     | 
    
         
             
            	          begin
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
             
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
     | 
    
         
            -
             
     | 
| 
       171 
     | 
    
         
            -
             
     | 
| 
       172 
     | 
    
         
            -
             
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
      
 179 
     | 
    
         
            +
            		          #puts record.portals.to_yaml
         
     | 
| 
      
 180 
     | 
    
         
            +
            		          portal_keys = portals.keys
         
     | 
| 
      
 181 
     | 
    
         
            +
            		          #puts "PORTALS: #{portal_keys}"
         
     | 
| 
      
 182 
     | 
    
         
            +
            		          portal_keys.each do |portal_key|
         
     | 
| 
      
 183 
     | 
    
         
            +
            		          	#relat = model.relationships.to_a.find{|r| storage_name = r.child_model.storage_names[:default]; portal_key.to_s == storage_name }
         
     | 
| 
      
 184 
     | 
    
         
            +
            		          	relat = model.relationships.to_a.find{|r| storage_name = r.child_model.storage_name; portal_key.to_s == storage_name }
         
     | 
| 
      
 185 
     | 
    
         
            +
            		          	if relat
         
     | 
| 
      
 186 
     | 
    
         
            +
            			          	#puts "BUILDING RELATIONSHIP FROM PORTAL: #{relat.name} #{relat.child_model.name}"
         
     | 
| 
      
 187 
     | 
    
         
            +
            			          	resources_from_portal = relat.child_model.load(record.instance_variable_get(:@portals)[portal_key], relat.child_model.query)
         
     | 
| 
      
 188 
     | 
    
         
            +
            			          	resource.instance_variable_set(relat.instance_variable_name, resources_from_portal)
         
     | 
| 
      
 189 
     | 
    
         
            +
            		          	end
         
     | 
| 
      
 190 
     | 
    
         
            +
            		          end
         
     | 
| 
       174 
191 
     | 
    
         
             
            	          rescue
         
     | 
| 
       175 
     | 
    
         
            -
            	            puts "ERROR LOADING PORTALS #{$!}"
         
     | 
| 
      
 192 
     | 
    
         
            +
            	            #puts "ERROR LOADING PORTALS #{$!}"
         
     | 
| 
       176 
193 
     | 
    
         
             
            	          end
         
     | 
| 
       177 
194 
     | 
    
         
             
            	        end
         
     | 
| 
       178 
195 
     | 
    
         
             
            					resource.instance_variable_set(:@_record_id, record.instance_variable_get(:@record_id))
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: dm-filemaker-adapter
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - William Richardson
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015-03- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-03-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: data_mapper
         
     | 
| 
         @@ -28,16 +28,16 @@ dependencies: 
     | 
|
| 
       28 
28 
     | 
    
         
             
              name: ginjo-rfm
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - -  
     | 
| 
      
 31 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
     | 
    
         
            -
                - -  
     | 
| 
      
 38 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: '3.0'
         
     | 
| 
       41 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
42 
     | 
    
         
             
              name: bundler
         
     | 
| 
       43 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     |