dm-adjust 1.1.0 → 1.2.0.rc1
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/Gemfile +8 -8
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/dm-adjust.gemspec +24 -26
- data/lib/dm-adjust.rb +2 -0
- data/lib/dm-adjust/adapters/data_objects_adapter.rb +15 -3
- data/lib/dm-adjust/adapters/in_memory_adapter.rb +26 -0
- data/lib/dm-adjust/adapters/yaml_adapter.rb +30 -0
- data/spec/integration/adjust_spec.rb +2 -1
- metadata +67 -31
data/Gemfile
CHANGED
@@ -5,26 +5,26 @@ source 'http://rubygems.org'
|
|
5
5
|
SOURCE = ENV.fetch('SOURCE', :git).to_sym
|
6
6
|
REPO_POSTFIX = SOURCE == :path ? '' : '.git'
|
7
7
|
DATAMAPPER = SOURCE == :path ? Pathname(__FILE__).dirname.parent : 'http://github.com/datamapper'
|
8
|
-
DM_VERSION = '~> 1.
|
9
|
-
DO_VERSION = '~> 0.10.
|
8
|
+
DM_VERSION = '~> 1.2.0.rc1'
|
9
|
+
DO_VERSION = '~> 0.10.6'
|
10
10
|
DM_DO_ADAPTERS = %w[ sqlite postgres mysql oracle sqlserver ]
|
11
11
|
|
12
12
|
gem 'dm-core', DM_VERSION, SOURCE => "#{DATAMAPPER}/dm-core#{REPO_POSTFIX}"
|
13
13
|
|
14
14
|
group :development do
|
15
15
|
|
16
|
-
gem 'jeweler', '~> 1.
|
17
|
-
gem 'rake', '~> 0.
|
18
|
-
gem 'rspec', '~> 1.3.
|
16
|
+
gem 'jeweler', '~> 1.6.4'
|
17
|
+
gem 'rake', '~> 0.9.2'
|
18
|
+
gem 'rspec', '~> 1.3.2'
|
19
19
|
|
20
20
|
end
|
21
21
|
|
22
22
|
platforms :mri_18 do
|
23
23
|
group :quality do
|
24
24
|
|
25
|
-
gem 'rcov', '~> 0.9.
|
26
|
-
gem 'yard', '~> 0.
|
27
|
-
gem 'yardstick', '~> 0.
|
25
|
+
gem 'rcov', '~> 0.9.10'
|
26
|
+
gem 'yard', '~> 0.7.2'
|
27
|
+
gem 'yardstick', '~> 0.4'
|
28
28
|
|
29
29
|
end
|
30
30
|
end
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0.rc1
|
data/dm-adjust.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.
|
7
|
+
s.name = "dm-adjust"
|
8
|
+
s.version = "1.2.0.rc1"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Sindre Aarsaether"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2011-09-09"
|
13
|
+
s.description = "DataMapper plugin providing methods to increment and decrement properties"
|
14
|
+
s.email = "sindre [a] identu [d] no"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
17
|
"README.rdoc"
|
@@ -25,6 +25,8 @@ Gem::Specification.new do |s|
|
|
25
25
|
"dm-adjust.gemspec",
|
26
26
|
"lib/dm-adjust.rb",
|
27
27
|
"lib/dm-adjust/adapters/data_objects_adapter.rb",
|
28
|
+
"lib/dm-adjust/adapters/in_memory_adapter.rb",
|
29
|
+
"lib/dm-adjust/adapters/yaml_adapter.rb",
|
28
30
|
"lib/dm-adjust/collection.rb",
|
29
31
|
"lib/dm-adjust/model.rb",
|
30
32
|
"lib/dm-adjust/repository.rb",
|
@@ -37,35 +39,31 @@ Gem::Specification.new do |s|
|
|
37
39
|
"tasks/yard.rake",
|
38
40
|
"tasks/yardstick.rake"
|
39
41
|
]
|
40
|
-
s.homepage =
|
42
|
+
s.homepage = "http://github.com/datamapper/dm-adjust"
|
41
43
|
s.require_paths = ["lib"]
|
42
|
-
s.rubyforge_project =
|
43
|
-
s.rubygems_version =
|
44
|
-
s.summary =
|
45
|
-
s.test_files = [
|
46
|
-
"spec/integration/adjust_spec.rb",
|
47
|
-
"spec/spec_helper.rb"
|
48
|
-
]
|
44
|
+
s.rubyforge_project = "datamapper"
|
45
|
+
s.rubygems_version = "1.8.10"
|
46
|
+
s.summary = "DataMapper plugin providing methods to increment and decrement properties"
|
49
47
|
|
50
48
|
if s.respond_to? :specification_version then
|
51
49
|
s.specification_version = 3
|
52
50
|
|
53
51
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
54
|
-
s.add_runtime_dependency(%q<dm-core>, ["~> 1.
|
55
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.
|
56
|
-
s.add_development_dependency(%q<rake>, ["~> 0.
|
57
|
-
s.add_development_dependency(%q<rspec>, ["~> 1.3.
|
52
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
53
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
54
|
+
s.add_development_dependency(%q<rake>, ["~> 0.9.2"])
|
55
|
+
s.add_development_dependency(%q<rspec>, ["~> 1.3.2"])
|
58
56
|
else
|
59
|
-
s.add_dependency(%q<dm-core>, ["~> 1.
|
60
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
61
|
-
s.add_dependency(%q<rake>, ["~> 0.
|
62
|
-
s.add_dependency(%q<rspec>, ["~> 1.3.
|
57
|
+
s.add_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
58
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
59
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
60
|
+
s.add_dependency(%q<rspec>, ["~> 1.3.2"])
|
63
61
|
end
|
64
62
|
else
|
65
|
-
s.add_dependency(%q<dm-core>, ["~> 1.
|
66
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
67
|
-
s.add_dependency(%q<rake>, ["~> 0.
|
68
|
-
s.add_dependency(%q<rspec>, ["~> 1.3.
|
63
|
+
s.add_dependency(%q<dm-core>, ["~> 1.2.0.rc1"])
|
64
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
65
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
66
|
+
s.add_dependency(%q<rspec>, ["~> 1.3.2"])
|
69
67
|
end
|
70
68
|
end
|
71
69
|
|
data/lib/dm-adjust.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module DataMapper
|
2
2
|
module Adapters
|
3
|
-
|
3
|
+
module DataObjectsAdapterAdjust
|
4
4
|
def adjust(attributes, collection)
|
5
5
|
query = collection.query
|
6
6
|
|
@@ -38,12 +38,24 @@ module DataMapper
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def set_adjustment_statement(properties)
|
41
|
-
properties.map { |p| "#{quote_name(p.field)} = #{quote_name(p.field)} + ?" }.join(', ')
|
41
|
+
properties.map { |p| "#{quote_name(p.field)} = COALESCE(#{quote_name(p.field)}, 0) + ?" }.join(', ')
|
42
42
|
end
|
43
43
|
|
44
44
|
end # module SQL
|
45
45
|
|
46
46
|
include SQL
|
47
|
-
end #
|
47
|
+
end # module DataObjectsAdapterAdjust
|
48
|
+
|
49
|
+
extendable do
|
50
|
+
# @api private
|
51
|
+
def const_added(const_name)
|
52
|
+
if const_name == :DataObjectsAdapter
|
53
|
+
DataObjectsAdapter.send(:include, DataObjectsAdapterAdjust)
|
54
|
+
end
|
55
|
+
|
56
|
+
super
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
48
60
|
end # module Adapters
|
49
61
|
end # module DataMapper
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module DataMapper
|
2
|
+
module Adapters
|
3
|
+
module InMemoryAdapterAdjust
|
4
|
+
def adjust(attributes, collection)
|
5
|
+
attributes = attributes_as_fields(attributes)
|
6
|
+
read(collection.query).each do |record|
|
7
|
+
record.update(attributes) do |key, oldvalue, newvalue|
|
8
|
+
(oldvalue || 0) + newvalue
|
9
|
+
end
|
10
|
+
end.size
|
11
|
+
end
|
12
|
+
end # module InMemoryAdapterAdjust
|
13
|
+
|
14
|
+
extendable do
|
15
|
+
# @api private
|
16
|
+
def const_added(const_name)
|
17
|
+
if const_name == :InMemoryAdapter
|
18
|
+
InMemoryAdapter.send(:include, InMemoryAdapterAdjust)
|
19
|
+
end
|
20
|
+
|
21
|
+
super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end # module Adapters
|
26
|
+
end # module DataMapper
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module DataMapper
|
2
|
+
module Adapters
|
3
|
+
module YamlAdapterAdjust
|
4
|
+
def adjust(attributes, collection)
|
5
|
+
attributes = attributes_as_fields(attributes)
|
6
|
+
|
7
|
+
update_records(collection.model) do |records|
|
8
|
+
records_to_update = collection.query.filter_records(records.dup)
|
9
|
+
records_to_update.each do |record|
|
10
|
+
record.update(attributes) do |key, oldvalue, newvalue|
|
11
|
+
(oldvalue || 0) + newvalue
|
12
|
+
end
|
13
|
+
end.size
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end # module YamlAdapterAdjust
|
17
|
+
|
18
|
+
extendable do
|
19
|
+
# @api private
|
20
|
+
def const_added(const_name)
|
21
|
+
if const_name == :YamlAdapter
|
22
|
+
YamlAdapter.send(:include, YamlAdapterAdjust)
|
23
|
+
end
|
24
|
+
|
25
|
+
super
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end # module Adapters
|
30
|
+
end # module DataMapper
|
@@ -14,12 +14,13 @@ describe 'dm-adjust' do
|
|
14
14
|
|
15
15
|
end
|
16
16
|
|
17
|
-
supported_by :sqlite, :mysql, :postgres do
|
17
|
+
supported_by :in_memory, :yaml, :sqlite, :mysql, :postgres do
|
18
18
|
|
19
19
|
describe 'Adjust' do
|
20
20
|
|
21
21
|
before do
|
22
22
|
Person.auto_migrate!(:default)
|
23
|
+
Person.all.destroy
|
23
24
|
Person.create(:name => 'George', :age => 15)
|
24
25
|
Person.create(:name => 'Puff', :age => 18)
|
25
26
|
Person.create(:name => 'Danny', :age => 26)
|
metadata
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-adjust
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
hash: 15424023
|
5
|
+
prerelease: 6
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
- rc
|
11
|
+
- 1
|
12
|
+
version: 1.2.0.rc1
|
6
13
|
platform: ruby
|
7
14
|
authors:
|
8
15
|
- Sindre Aarsaether
|
@@ -10,53 +17,74 @@ autorequire:
|
|
10
17
|
bindir: bin
|
11
18
|
cert_chain: []
|
12
19
|
|
13
|
-
date: 2011-
|
14
|
-
default_executable:
|
20
|
+
date: 2011-09-09 00:00:00 Z
|
15
21
|
dependencies:
|
16
22
|
- !ruby/object:Gem::Dependency
|
17
|
-
|
18
|
-
|
23
|
+
type: :runtime
|
24
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
19
25
|
none: false
|
20
26
|
requirements:
|
21
27
|
- - ~>
|
22
28
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
29
|
+
hash: 15424023
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 2
|
33
|
+
- 0
|
34
|
+
- rc
|
35
|
+
- 1
|
36
|
+
version: 1.2.0.rc1
|
25
37
|
prerelease: false
|
26
|
-
|
38
|
+
requirement: *id001
|
39
|
+
name: dm-core
|
27
40
|
- !ruby/object:Gem::Dependency
|
28
|
-
|
29
|
-
|
41
|
+
type: :development
|
42
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
30
43
|
none: false
|
31
44
|
requirements:
|
32
45
|
- - ~>
|
33
46
|
- !ruby/object:Gem::Version
|
34
|
-
|
35
|
-
|
47
|
+
hash: 7
|
48
|
+
segments:
|
49
|
+
- 1
|
50
|
+
- 6
|
51
|
+
- 4
|
52
|
+
version: 1.6.4
|
36
53
|
prerelease: false
|
37
|
-
|
54
|
+
requirement: *id002
|
55
|
+
name: jeweler
|
38
56
|
- !ruby/object:Gem::Dependency
|
39
|
-
|
40
|
-
|
57
|
+
type: :development
|
58
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
41
59
|
none: false
|
42
60
|
requirements:
|
43
61
|
- - ~>
|
44
62
|
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
63
|
+
hash: 63
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
- 9
|
67
|
+
- 2
|
68
|
+
version: 0.9.2
|
47
69
|
prerelease: false
|
48
|
-
|
70
|
+
requirement: *id003
|
71
|
+
name: rake
|
49
72
|
- !ruby/object:Gem::Dependency
|
50
|
-
|
51
|
-
|
73
|
+
type: :development
|
74
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
52
75
|
none: false
|
53
76
|
requirements:
|
54
77
|
- - ~>
|
55
78
|
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
|
79
|
+
hash: 31
|
80
|
+
segments:
|
81
|
+
- 1
|
82
|
+
- 3
|
83
|
+
- 2
|
84
|
+
version: 1.3.2
|
58
85
|
prerelease: false
|
59
|
-
|
86
|
+
requirement: *id004
|
87
|
+
name: rspec
|
60
88
|
description: DataMapper plugin providing methods to increment and decrement properties
|
61
89
|
email: sindre [a] identu [d] no
|
62
90
|
executables: []
|
@@ -75,6 +103,8 @@ files:
|
|
75
103
|
- dm-adjust.gemspec
|
76
104
|
- lib/dm-adjust.rb
|
77
105
|
- lib/dm-adjust/adapters/data_objects_adapter.rb
|
106
|
+
- lib/dm-adjust/adapters/in_memory_adapter.rb
|
107
|
+
- lib/dm-adjust/adapters/yaml_adapter.rb
|
78
108
|
- lib/dm-adjust/collection.rb
|
79
109
|
- lib/dm-adjust/model.rb
|
80
110
|
- lib/dm-adjust/repository.rb
|
@@ -86,7 +116,6 @@ files:
|
|
86
116
|
- tasks/spec.rake
|
87
117
|
- tasks/yard.rake
|
88
118
|
- tasks/yardstick.rake
|
89
|
-
has_rdoc: true
|
90
119
|
homepage: http://github.com/datamapper/dm-adjust
|
91
120
|
licenses: []
|
92
121
|
|
@@ -100,20 +129,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
129
|
requirements:
|
101
130
|
- - ">="
|
102
131
|
- !ruby/object:Gem::Version
|
132
|
+
hash: 3
|
133
|
+
segments:
|
134
|
+
- 0
|
103
135
|
version: "0"
|
104
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
137
|
none: false
|
106
138
|
requirements:
|
107
|
-
- - "
|
139
|
+
- - ">"
|
108
140
|
- !ruby/object:Gem::Version
|
109
|
-
|
141
|
+
hash: 25
|
142
|
+
segments:
|
143
|
+
- 1
|
144
|
+
- 3
|
145
|
+
- 1
|
146
|
+
version: 1.3.1
|
110
147
|
requirements: []
|
111
148
|
|
112
149
|
rubyforge_project: datamapper
|
113
|
-
rubygems_version: 1.
|
150
|
+
rubygems_version: 1.8.10
|
114
151
|
signing_key:
|
115
152
|
specification_version: 3
|
116
153
|
summary: DataMapper plugin providing methods to increment and decrement properties
|
117
|
-
test_files:
|
118
|
-
|
119
|
-
- spec/spec_helper.rb
|
154
|
+
test_files: []
|
155
|
+
|