dm-persevere-adapter 0.28.0 → 0.29.0

Sign up to get free protection for your applications and to get access to all the features.
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