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 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.28.0
1
+ 0.29.0
@@ -149,8 +149,21 @@ module DataMapper
149
149
  return properties
150
150
  end
151
151
 
152
- table_name = model.storage_name(name)
153
- schema_hash = model.to_json_schema_compatible_hash
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.28.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-25 00:00:00 -07:00
13
+ date: 2010-01-29 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency