postgres_upsert 5.0.0 → 5.1.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.
- checksums.yaml +5 -13
- data/.rubocop.yml +57 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +18 -3
- data/Gemfile +1 -2
- data/Gemfile.lock +171 -109
- data/README.md +8 -5
- data/app/assets/config/manifest.js +0 -0
- data/bin/setup +27 -0
- data/config/application.rb +0 -3
- data/config/database.yml +2 -0
- data/config/database.yml.travis +23 -0
- data/db/migrate/20150214192135_create_test_tables.rb +6 -1
- data/db/migrate/20150710162236_create_composite_models_table.rb +1 -1
- data/db/schema.rb +22 -17
- data/lib/postgres_upsert.rb +35 -6
- data/lib/postgres_upsert/model_to_model_adapter.rb +37 -0
- data/lib/postgres_upsert/read_adapters/active_record_adapter.rb +37 -0
- data/lib/postgres_upsert/read_adapters/file_adapter.rb +42 -0
- data/lib/postgres_upsert/read_adapters/io_adapter.rb +42 -0
- data/lib/postgres_upsert/result.rb +3 -4
- data/lib/postgres_upsert/table_writer.rb +7 -9
- data/lib/postgres_upsert/write_adapters/active_record_adapter.rb +36 -0
- data/lib/postgres_upsert/write_adapters/table_adapter.rb +56 -0
- data/lib/postgres_upsert/writer.rb +87 -69
- data/postgres_upsert.gemspec +6 -3
- data/spec/composite_key_spec.rb +0 -6
- data/spec/fixtures/comma_with_header_duplicate.csv +3 -0
- data/spec/fixtures/test_model_copy.rb +4 -0
- data/spec/from_table_spec.rb +40 -0
- data/spec/pg_upsert_csv_spec.rb +11 -10
- data/spec/rails_helper.rb +1 -0
- data/spec/spec_helper.rb +5 -2
- metadata +77 -31
- data/VERSION +0 -1
data/spec/pg_upsert_csv_spec.rb
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
|
3
3
|
describe "pg_upsert from file with CSV format" do
|
|
4
|
-
before(:each) do
|
|
5
|
-
ActiveRecord::Base.connection.execute %{
|
|
6
|
-
TRUNCATE TABLE test_models;
|
|
7
|
-
TRUNCATE TABLE three_columns;
|
|
8
|
-
SELECT setval('test_models_id_seq', 1, false);
|
|
9
|
-
}
|
|
10
|
-
end
|
|
11
4
|
|
|
12
5
|
before do
|
|
13
|
-
DateTime.stub_chain(:now, :utc).and_return (DateTime.parse("2012-01-01").utc)
|
|
6
|
+
DateTime.stub_chain(:now, :utc).and_return (DateTime.parse("2012-01-01").utc.round(4))
|
|
7
|
+
@time_now = Time.now.round(4)
|
|
8
|
+
allow(Time).to receive(:now).and_return(@time_now)
|
|
14
9
|
end
|
|
15
10
|
|
|
16
11
|
def timestamp
|
|
@@ -37,6 +32,12 @@ describe "pg_upsert from file with CSV format" do
|
|
|
37
32
|
}.to raise_error
|
|
38
33
|
end
|
|
39
34
|
|
|
35
|
+
it "throws error if source data contains duplicate pk" do
|
|
36
|
+
expect{
|
|
37
|
+
PostgresUpsert.write TestModel, File.expand_path('spec/fixtures/comma_with_header_duplicate.csv')
|
|
38
|
+
}.to raise_error(/duplicate key/)
|
|
39
|
+
end
|
|
40
|
+
|
|
40
41
|
it "should import from IO without field_map" do
|
|
41
42
|
PostgresUpsert.write TestModel, File.open(File.expand_path('spec/fixtures/comma_with_header.csv'), 'r')
|
|
42
43
|
expect(
|
|
@@ -142,7 +143,7 @@ describe "pg_upsert from file with CSV format" do
|
|
|
142
143
|
|
|
143
144
|
it "should clean up the temp table after completion" do
|
|
144
145
|
PostgresUpsert.write TestModel, File.expand_path('spec/fixtures/tab_with_two_lines.csv'), :delimiter => "\t"
|
|
145
|
-
|
|
146
|
+
|
|
146
147
|
ActiveRecord::Base.connection.tables.should_not include("test_models_temp")
|
|
147
148
|
end
|
|
148
149
|
|
|
@@ -202,7 +203,7 @@ describe "pg_upsert from file with CSV format" do
|
|
|
202
203
|
|
|
203
204
|
expect{
|
|
204
205
|
PostgresUpsert.write(ThreeColumn, file, :header => true)
|
|
205
|
-
}.to raise_error (/Expected
|
|
206
|
+
}.to raise_error (/Expected column 'id'/)
|
|
206
207
|
end
|
|
207
208
|
|
|
208
209
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require File.expand_path(__dir__ + '/spec_helper')
|
data/spec/spec_helper.rb
CHANGED
|
@@ -2,15 +2,18 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
|
2
2
|
require File.expand_path("../../config/environment", __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
4
4
|
require 'fixtures/test_model'
|
|
5
|
+
require 'fixtures/test_model_copy'
|
|
5
6
|
require 'fixtures/three_column'
|
|
6
7
|
require 'fixtures/reserved_word_model'
|
|
7
8
|
require 'fixtures/composite_key_model'
|
|
8
|
-
require 'rspec'
|
|
9
9
|
require 'rspec/rails'
|
|
10
10
|
require 'rspec/autorun'
|
|
11
|
+
require 'database_cleaner/active_record'
|
|
11
12
|
|
|
12
13
|
RSpec.configure do |config|
|
|
13
|
-
|
|
14
|
+
config.before(:example) do
|
|
15
|
+
DatabaseCleaner.clean_with(:truncation)
|
|
16
|
+
end
|
|
14
17
|
config.expose_current_running_example_as :example
|
|
15
18
|
config.infer_spec_type_from_file_location!
|
|
16
19
|
end
|
metadata
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: postgres_upsert
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steve Mitchell
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
date: 2014-09-12 00:00:00.000000000 Z
|
|
@@ -14,100 +14,128 @@ dependencies:
|
|
|
14
14
|
name: pg
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: 0.17.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: 0.17.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: activerecord
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: 3.0.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
40
|
version: 3.0.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rails
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: 3.0.0
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: 3.0.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: bundler
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: pry-rails
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- -
|
|
73
|
+
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '0'
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- -
|
|
80
|
+
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: pry-nav
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
|
-
- -
|
|
87
|
+
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
89
|
+
version: '0'
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
|
-
- -
|
|
94
|
+
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
96
|
+
version: '0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: rspec-rails
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
|
-
- -
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '3.9'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '3.9'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: database_cleaner-active_record
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: rubocop
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
102
130
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
131
|
+
version: '0'
|
|
104
132
|
type: :development
|
|
105
133
|
prerelease: false
|
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
135
|
requirements:
|
|
108
|
-
- -
|
|
136
|
+
- - ">="
|
|
109
137
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
138
|
+
version: '0'
|
|
111
139
|
description: Uses Postgres's powerful COPY command to upsert large sets of data into
|
|
112
140
|
ActiveRecord tables
|
|
113
141
|
email: thestevemitchell@gmail.com
|
|
@@ -115,14 +143,17 @@ executables: []
|
|
|
115
143
|
extensions: []
|
|
116
144
|
extra_rdoc_files: []
|
|
117
145
|
files:
|
|
118
|
-
- .gitignore
|
|
119
|
-
- .
|
|
146
|
+
- ".gitignore"
|
|
147
|
+
- ".rubocop.yml"
|
|
148
|
+
- ".ruby-gemset"
|
|
149
|
+
- ".ruby-version"
|
|
150
|
+
- ".travis.yml"
|
|
120
151
|
- Gemfile
|
|
121
152
|
- Gemfile.lock
|
|
122
153
|
- LICENSE
|
|
123
154
|
- README.md
|
|
124
155
|
- Rakefile
|
|
125
|
-
-
|
|
156
|
+
- app/assets/config/manifest.js
|
|
126
157
|
- bin/bundle
|
|
127
158
|
- bin/rails
|
|
128
159
|
- bin/rake
|
|
@@ -131,6 +162,7 @@ files:
|
|
|
131
162
|
- config/application.rb
|
|
132
163
|
- config/boot.rb
|
|
133
164
|
- config/database.yml
|
|
165
|
+
- config/database.yml.travis
|
|
134
166
|
- config/environment.rb
|
|
135
167
|
- config/environments/development.rb
|
|
136
168
|
- config/environments/production.rb
|
|
@@ -143,14 +175,21 @@ files:
|
|
|
143
175
|
- db/schema.rb
|
|
144
176
|
- db/seeds.rb
|
|
145
177
|
- lib/postgres_upsert.rb
|
|
178
|
+
- lib/postgres_upsert/model_to_model_adapter.rb
|
|
179
|
+
- lib/postgres_upsert/read_adapters/active_record_adapter.rb
|
|
180
|
+
- lib/postgres_upsert/read_adapters/file_adapter.rb
|
|
181
|
+
- lib/postgres_upsert/read_adapters/io_adapter.rb
|
|
146
182
|
- lib/postgres_upsert/result.rb
|
|
147
183
|
- lib/postgres_upsert/table_writer.rb
|
|
184
|
+
- lib/postgres_upsert/write_adapters/active_record_adapter.rb
|
|
185
|
+
- lib/postgres_upsert/write_adapters/table_adapter.rb
|
|
148
186
|
- lib/postgres_upsert/writer.rb
|
|
149
187
|
- postgres_upsert.gemspec
|
|
150
188
|
- spec/composite_key_spec.rb
|
|
151
189
|
- spec/fixtures/comma_with_header.csv
|
|
152
190
|
- spec/fixtures/comma_with_header_and_comma_values.csv
|
|
153
191
|
- spec/fixtures/comma_with_header_and_unquoted_comma.csv
|
|
192
|
+
- spec/fixtures/comma_with_header_duplicate.csv
|
|
154
193
|
- spec/fixtures/comma_without_header.csv
|
|
155
194
|
- spec/fixtures/composite_key_model.rb
|
|
156
195
|
- spec/fixtures/composite_key_with_header.csv
|
|
@@ -167,30 +206,33 @@ files:
|
|
|
167
206
|
- spec/fixtures/tab_with_header.csv
|
|
168
207
|
- spec/fixtures/tab_with_two_lines.csv
|
|
169
208
|
- spec/fixtures/test_model.rb
|
|
209
|
+
- spec/fixtures/test_model_copy.rb
|
|
170
210
|
- spec/fixtures/three_column.rb
|
|
211
|
+
- spec/from_table_spec.rb
|
|
171
212
|
- spec/pg_upsert_csv_spec.rb
|
|
213
|
+
- spec/rails_helper.rb
|
|
172
214
|
- spec/spec_helper.rb
|
|
173
215
|
homepage: https://github.com/theSteveMitchell/postgres_upsert
|
|
174
|
-
licenses:
|
|
216
|
+
licenses:
|
|
217
|
+
- MIT
|
|
175
218
|
metadata: {}
|
|
176
|
-
post_install_message:
|
|
219
|
+
post_install_message:
|
|
177
220
|
rdoc_options: []
|
|
178
221
|
require_paths:
|
|
179
222
|
- lib
|
|
180
223
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
224
|
requirements:
|
|
182
|
-
- -
|
|
225
|
+
- - ">="
|
|
183
226
|
- !ruby/object:Gem::Version
|
|
184
227
|
version: 1.8.7
|
|
185
228
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
229
|
requirements:
|
|
187
|
-
- -
|
|
230
|
+
- - ">="
|
|
188
231
|
- !ruby/object:Gem::Version
|
|
189
232
|
version: '0'
|
|
190
233
|
requirements: []
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
signing_key:
|
|
234
|
+
rubygems_version: 3.2.3
|
|
235
|
+
signing_key:
|
|
194
236
|
specification_version: 4
|
|
195
237
|
summary: A rubygem that integrates with ActiveRecord to insert/update large data sets
|
|
196
238
|
into the database efficiently
|
|
@@ -199,6 +241,7 @@ test_files:
|
|
|
199
241
|
- spec/fixtures/comma_with_header.csv
|
|
200
242
|
- spec/fixtures/comma_with_header_and_comma_values.csv
|
|
201
243
|
- spec/fixtures/comma_with_header_and_unquoted_comma.csv
|
|
244
|
+
- spec/fixtures/comma_with_header_duplicate.csv
|
|
202
245
|
- spec/fixtures/comma_without_header.csv
|
|
203
246
|
- spec/fixtures/composite_key_model.rb
|
|
204
247
|
- spec/fixtures/composite_key_with_header.csv
|
|
@@ -215,6 +258,9 @@ test_files:
|
|
|
215
258
|
- spec/fixtures/tab_with_header.csv
|
|
216
259
|
- spec/fixtures/tab_with_two_lines.csv
|
|
217
260
|
- spec/fixtures/test_model.rb
|
|
261
|
+
- spec/fixtures/test_model_copy.rb
|
|
218
262
|
- spec/fixtures/three_column.rb
|
|
263
|
+
- spec/from_table_spec.rb
|
|
219
264
|
- spec/pg_upsert_csv_spec.rb
|
|
265
|
+
- spec/rails_helper.rb
|
|
220
266
|
- spec/spec_helper.rb
|
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.1.0
|