dm-filemaker-adapter 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|