bulk_importer 0.2.3 → 0.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 874a0a632ea28fb994d76931bf16ca5ae51c8d95
4
- data.tar.gz: a08b75cbaab59bda7d5f2bf4a207e7b37cfecae2
3
+ metadata.gz: af9d570d6a791d9d02cbe11d50a57c1dd6dd6ca4
4
+ data.tar.gz: d042e00d1a22c6ecb5d5a8c5daa5d913c7456728
5
5
  SHA512:
6
- metadata.gz: f84fb1c6dfbc32074607d4637ad35666d105a5129f159c66d95a7eb9c7a85126fc3429437159f5e86a422ba4a4575c04e49bf69f44e65c7e56ed04fb6736241a
7
- data.tar.gz: 8a4020a4f9e6e3ac1087a2e790a472e7a9e8fdb52525abf0b21b46597533dc7a11e8b2c9519e7ed95089a92954bdf7ec4959c0a1ba11f14ef38a6b8ba9703f4e
6
+ metadata.gz: a5ff4f2c15edc96c34cba15f2fe61d91de9814a30d344b7badf94ee98cea23238551380899fd040dd35c52282df1724907eb4c9545db7addaa80378cb12cd456
7
+ data.tar.gz: de193bea6a534bbc4280ceffe941135d6e280d00512267aaa64a8aafabe9fd607e8cf859a83958d4cedc1d38b33556132ff24056cddf4eeb364848317e5d5665
data/lib/bulk_importer.rb CHANGED
@@ -203,22 +203,36 @@ module BulkImporter
203
203
  o_columns_without_keys = columns.keys.delete_if { |i| keys.has_key? i }
204
204
  d_columns_without_keys = columns.values.delete_if { |i| keys.has_value? i }
205
205
 
206
- sql << "WITH #{origin}_prexistent_modified AS ("
207
- sql << "SELECT o.* FROM #{origin} o JOIN #{destination} d"
208
- sql << "ON (#{self.keys_to_list(keys.keys, 'o', types)}) = "
209
- sql << "(#{self.keys_to_list(keys.values, 'd')}) AND "
210
- sql << "(#{self.keys_to_list(o_columns_without_keys, 'o', types)}) != "
211
- sql << "(#{self.keys_to_list(d_columns_without_keys, 'd')})"
212
- sql << ")"
213
- sql << "UPDATE #{destination} d SET"
214
206
  set = []
215
207
  columns.delete_if { |item| columns[item].nil? }.keys.each do |column|
216
208
  set << "#{columns[column]} = o.#{column}::#{types[column]}"
217
209
  end
218
- sql << set.join(',')
219
- sql << "FROM #{origin}_prexistent_modified o"
220
- sql << "WHERE (#{self.keys_to_list(keys.keys, 'o', types)}) = "
221
- sql << "(#{self.keys_to_list(keys.values, 'd')})"
210
+ sets = set.join(',')
211
+
212
+ if columns.has_value? 'updated_at'
213
+ # Field is updated if origin's updated_at is greater than destination.
214
+
215
+ PostgresqlModule.create_index_on origin, columns.invert['updated_at'].downcase
216
+
217
+ sql << "UPDATE #{destination} d SET #{sets}"
218
+ sql << "FROM #{origin} o"
219
+ sql << "WHERE (#{self.keys_to_list(keys.keys, 'o', types)}) = "
220
+ sql << "(#{self.keys_to_list(keys.values, 'd')}) AND"
221
+ sql << "o.#{columns.invert['updated_at'].downcase}::timestamp > d.updated_at"
222
+ else
223
+ # Check if any field changed
224
+ sql << "WITH #{origin}_prexistent_modified AS ("
225
+ sql << "SELECT o.* FROM #{origin} o JOIN #{destination} d"
226
+ sql << "ON (#{self.keys_to_list(keys.keys, 'o', types)}) = "
227
+ sql << "(#{self.keys_to_list(keys.values, 'd')}) AND "
228
+ sql << "(#{self.keys_to_list(o_columns_without_keys, 'o', types)}) != "
229
+ sql << "(#{self.keys_to_list(d_columns_without_keys, 'd')})"
230
+ sql << ")"
231
+ sql << "UPDATE #{destination} d SET #{sets}"
232
+ sql << "FROM #{origin}_prexistent_modified o"
233
+ sql << "WHERE (#{self.keys_to_list(keys.keys, 'o', types)}) = "
234
+ sql << "(#{self.keys_to_list(keys.values, 'd')})"
235
+ end
222
236
 
223
237
  q << sql.join(' ')
224
238
 
@@ -1,3 +1,3 @@
1
1
  module BulkImporter
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulk_importer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abel M. Osorio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-05 00:00:00.000000000 Z
11
+ date: 2016-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler