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
|