dm-persevere-adapter 0.28.0 → 0.29.0
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/Rakefile +11 -11
- data/VERSION +1 -1
- data/lib/persevere_adapter.rb +16 -3
- data/spec/persevere_adapter_spec.rb +28 -0
- metadata +2 -2
data/Rakefile
CHANGED
@@ -14,17 +14,17 @@ begin
|
|
14
14
|
gemspec.add_dependency(%q<dm-core>, [">= 0.10.1"])
|
15
15
|
gemspec.add_dependency(%q<extlib>)
|
16
16
|
end
|
17
|
-
Jeweler::Tasks.new do |gemspec|
|
18
|
-
gemspec.name = %q{persevere}
|
19
|
-
gemspec.summary = %q{A ruby wrapper for persevere}
|
20
|
-
gemspec.description = %q{A ruby wrapper for persevere}
|
21
|
-
gemspec.email = ["irjudson [a] gmail [d] com"]
|
22
|
-
gemspec.homepage = %q{http://github.com/yogo/persevere}
|
23
|
-
gemspec.authors = ["Ivan R. Judson", "The Yogo Data Management Development Team" ]
|
24
|
-
gemspec.rdoc_options = ["--main", "persevere/README.txt"]
|
25
|
-
gemspec.files = ["LICENSE.txt", "persevere/History.txt", "persevere/README.txt", "Rakefile", "lib/persevere.rb"]
|
26
|
-
gemspec.test_files = ["spec/persevere_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
|
27
|
-
end
|
17
|
+
# Jeweler::Tasks.new do |gemspec|
|
18
|
+
# gemspec.name = %q{persevere}
|
19
|
+
# gemspec.summary = %q{A ruby wrapper for persevere}
|
20
|
+
# gemspec.description = %q{A ruby wrapper for persevere}
|
21
|
+
# gemspec.email = ["irjudson [a] gmail [d] com"]
|
22
|
+
# gemspec.homepage = %q{http://github.com/yogo/persevere}
|
23
|
+
# gemspec.authors = ["Ivan R. Judson", "The Yogo Data Management Development Team" ]
|
24
|
+
# gemspec.rdoc_options = ["--main", "persevere/README.txt"]
|
25
|
+
# gemspec.files = ["LICENSE.txt", "persevere/History.txt", "persevere/README.txt", "Rakefile", "lib/persevere.rb"]
|
26
|
+
# gemspec.test_files = ["spec/persevere_spec.rb", "spec/spec.opts", "spec/spec_helper.rb"]
|
27
|
+
# end
|
28
28
|
Jeweler::GemcutterTasks.new
|
29
29
|
rescue LoadError
|
30
30
|
puts "Jeweler not available. Install it with: gem install jeweler"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.29.0
|
data/lib/persevere_adapter.rb
CHANGED
@@ -149,8 +149,21 @@ module DataMapper
|
|
149
149
|
return properties
|
150
150
|
end
|
151
151
|
|
152
|
-
|
153
|
-
|
152
|
+
new_schema_hash = model.to_json_schema_compatible_hash
|
153
|
+
current_schema_hash = get_schema(new_schema_hash['id'])[0]
|
154
|
+
# Diff of what is there and what will be added.
|
155
|
+
|
156
|
+
new_properties = properties.map do |property|
|
157
|
+
prop_name = property.name.to_s
|
158
|
+
prop_type = property.type
|
159
|
+
next if prop_name == 'id' ||
|
160
|
+
(current_schema_hash['properties'].has_key?(prop_name) &&
|
161
|
+
new_schema_hash['properties'][prop_name.to_sym]['type'] == current_schema_hash['properties'][prop_name]['type'] )
|
162
|
+
property
|
163
|
+
end.compact
|
164
|
+
|
165
|
+
return new_properties unless update_schema(new_schema_hash) == false
|
166
|
+
return nil
|
154
167
|
end
|
155
168
|
|
156
169
|
##
|
@@ -464,7 +477,7 @@ module DataMapper
|
|
464
477
|
def update_schema(schema_hash, project = nil)
|
465
478
|
id = schema_hash['id']
|
466
479
|
payload = schema_hash.reject{|key,value| key.to_sym.eql?(:id) }
|
467
|
-
|
480
|
+
payload['properties'].delete('id') if payload['properties'].has_key?('id')
|
468
481
|
|
469
482
|
if project.nil?
|
470
483
|
path = "/Class/#{id}"
|
@@ -36,6 +36,13 @@ describe DataMapper::Adapters::PersevereAdapter do
|
|
36
36
|
property :title, String
|
37
37
|
end
|
38
38
|
|
39
|
+
class ::Nugaton
|
40
|
+
include DataMapper::Resource
|
41
|
+
|
42
|
+
property :id, Serial
|
43
|
+
property :name, String
|
44
|
+
end
|
45
|
+
|
39
46
|
@test_schema_hash = {
|
40
47
|
'id' => 'Vanilla',
|
41
48
|
'properties' => {
|
@@ -186,4 +193,25 @@ describe DataMapper::Adapters::PersevereAdapter do
|
|
186
193
|
Bozon.auto_migrate_down!
|
187
194
|
end
|
188
195
|
end
|
196
|
+
|
197
|
+
describe 'auto updating models' do
|
198
|
+
before :each do
|
199
|
+
Nugaton.auto_migrate!
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should auto upgrade correctly" do
|
203
|
+
before_schema = @adapter.get_schema('nugaton')[0]
|
204
|
+
before_schema['properties'].should have_key('name')
|
205
|
+
before_schema['properties'].should_not have_key('big_value')
|
206
|
+
Nugaton.send(:property, :big_value, Integer)
|
207
|
+
Nugaton.auto_upgrade!
|
208
|
+
before_schema = @adapter.get_schema('nugaton')[0]
|
209
|
+
before_schema['properties'].should have_key('name')
|
210
|
+
before_schema['properties'].should have_key('big_value')
|
211
|
+
end
|
212
|
+
|
213
|
+
after(:all) do
|
214
|
+
Nugaton.auto_migrate_down!
|
215
|
+
end
|
216
|
+
end
|
189
217
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-persevere-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan R. Judson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-01-
|
13
|
+
date: 2010-01-29 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|