beetle_etl 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 13376260ac59a025f892af7ab4c47346ef7bd399
4
- data.tar.gz: e5e0bcad031552006cc3e650725b245e121acc25
3
+ metadata.gz: 1edda8a1e337f1aa6f17031c95d6eb8b1672c2a1
4
+ data.tar.gz: bd24f5983ecafd0e08b0573e50e690fdd90ca989
5
5
  SHA512:
6
- metadata.gz: e06aa20a649cd4caf061dc9f847df5446c5d09b1f60b86ecc9c450cb1de3670deff56564e9636e86865748e6b2fcf1697832d6464fd6f5d07d16ad6af987d225
7
- data.tar.gz: 68e3004d46baf5d6f1d9eaf9e88f79ff6617e00ce013bb0b7faad89e9b175bd7827f02f6cd82a45f64acf9a1e8e08bcb3f40bd8fe3c5811c5d52256a3df5fa5e
6
+ metadata.gz: 7318b99966f73b114196f5d0f371220557caf54870c74426e1468178ae63afc4f318a5292922d86977e9d8b028fd12e15d3cf6409c5695e7c7775878cc3e4894
7
+ data.tar.gz: 5db98f072ccf66e5a373f443d2ce4e9a5134592abfd196b75173413e3c84cc08babf106af5da6c97806481cd9d54217d7cf6b4a80943491bfd23312a1a75ce79
@@ -1,14 +1,13 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
4
- - 2.2.0
5
- - 2.3.0
6
- - 2.4.0
7
- addons:
8
- postgresql: "9.3"
9
- before_install:
10
- - gem update --system
11
- - gem update bundler
3
+ - 2.0
4
+ - 2.2
5
+ - 2.3
6
+ - 2.4
7
+ - 2.6
8
+
9
+ services:
10
+ - postgresql
12
11
 
13
12
  before_script:
14
13
  - psql -c 'create database travis_ci_test;' -U postgres
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Luciano Maiwald
1
+ Copyright (c) 2014 - 2017 Luciano Maiwald
2
2
 
3
3
  MIT License
4
4
 
@@ -18,10 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_runtime_dependency 'activesupport', '>= 4.0.0'
22
-
23
21
  spec.add_development_dependency 'sequel', '>= 4.0.0'
24
- spec.add_development_dependency 'bundler', '~> 1.11'
22
+ spec.add_development_dependency 'bundler', '>= 1.11'
25
23
  spec.add_development_dependency 'rspec', '>= 3.0.0'
26
24
  spec.add_development_dependency 'timecop', '>= 0.7.0'
27
25
  spec.add_development_dependency 'pg', '>= 0.18.0'
@@ -1,5 +1,3 @@
1
- require 'active_support/core_ext/hash/deep_merge'
2
-
3
1
  module BeetleETL
4
2
  class Import
5
3
 
@@ -27,7 +25,7 @@ module BeetleETL
27
25
  CreateStage.new(@config, t.table_name, t.relations, t.column_names)
28
26
  }
29
27
 
30
- @report.deep_merge StepRunner.new(@config, steps).run
28
+ merge_report! StepRunner.new(@config, steps).run
31
29
  end
32
30
 
33
31
  def run_transform
@@ -39,7 +37,7 @@ module BeetleETL
39
37
  ]
40
38
  }
41
39
 
42
- @report.deep_merge AsyncStepRunner.new(@config, steps).run
40
+ merge_report! AsyncStepRunner.new(@config, steps).run
43
41
  end
44
42
 
45
43
  def run_load
@@ -51,7 +49,7 @@ module BeetleETL
51
49
  StepRunner.new(@config, steps).run
52
50
  end
53
51
 
54
- @report.deep_merge result
52
+ merge_report! result
55
53
  end
56
54
 
57
55
  def run_cleanup
@@ -59,7 +57,11 @@ module BeetleETL
59
57
  DropStage.new(@config, t.table_name)
60
58
  }
61
59
 
62
- @report.deep_merge StepRunner.new(@config, steps).run
60
+ merge_report! StepRunner.new(@config, steps).run
61
+ end
62
+
63
+ def merge_report!(new_report)
64
+ @report.merge!(new_report) { |key, oldval, newval| oldval.merge(newval) }
63
65
  end
64
66
 
65
67
  end
@@ -55,7 +55,10 @@ module BeetleETL
55
55
  step_name = step_data[:step_name]
56
56
 
57
57
  results[table_name] ||= {}
58
- results[table_name][step_name] = step_data.slice(:started_at, :finished_at)
58
+ results[table_name][step_name] = {
59
+ started_at: step_data[:started_at],
60
+ finished_at: step_data[:finished_at]
61
+ }
59
62
  end
60
63
 
61
64
  def all_steps_complete?
@@ -1,3 +1,3 @@
1
1
  module BeetleETL
2
- VERSION = "2.0.4"
2
+ VERSION = "2.0.5"
3
3
  end
@@ -4,18 +4,15 @@ require 'timecop'
4
4
  require_relative 'example_schema'
5
5
  require 'yaml'
6
6
 
7
- require 'active_support/core_ext/date/calculations'
8
- require 'active_support/core_ext/numeric/time'
9
-
10
7
  Thread::abort_on_exception = true
11
8
 
12
9
  describe BeetleETL do
13
10
 
14
11
  include ExampleSchema
15
12
 
16
- let!(:time1) { Time.new(2014 , 7 , 17 , 16 , 12).beginning_of_day }
17
- let!(:time2) { Time.new(2015 , 2 , 8 , 22 , 18).beginning_of_day }
18
- let!(:time3) { Time.new(2015 , 11 , 3 , 12 , 17).beginning_of_day }
13
+ let!(:time1) { Time.new(2014 , 7 , 17 , 16 , 12) }
14
+ let!(:time2) { Time.new(2015 , 2 , 8 , 22 , 18) }
15
+ let!(:time3) { Time.new(2015 , 11 , 3 , 12 , 17) }
19
16
 
20
17
  before :each do
21
18
  create_tables
@@ -1,15 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'active_support/core_ext/date/calculations'
4
- require 'active_support/core_ext/numeric/time'
5
-
6
3
  module BeetleETL
7
4
  describe Load do
8
5
 
9
6
  let(:external_source) { 'my_source' }
10
7
 
11
- let(:now) { Time.now.beginning_of_day }
12
- let(:yesterday) { 1.day.ago.beginning_of_day }
8
+ let(:today) { Time.new(2020, 3, 24) }
9
+ let(:yesterday) { Time.new(2020, 3, 23) }
13
10
 
14
11
  let(:config) do
15
12
  Configuration.new.tap do |c|
@@ -21,7 +18,7 @@ module BeetleETL
21
18
  subject { Load.new(config, :example_table, []) }
22
19
 
23
20
  before do
24
- allow(subject).to receive(:now) { now }
21
+ allow(subject).to receive(:now) { today }
25
22
 
26
23
  test_database.create_schema(:stage)
27
24
  test_database.create_table(subject.stage_table_name.to_sym) do
@@ -86,7 +83,7 @@ module BeetleETL
86
83
 
87
84
  expect(:example_table).to have_values(
88
85
  [ :id , :external_id , :external_source , :foo_id , :created_at , :updated_at , :deleted_at , :payload ] ,
89
- [ 3 , 'external_id' , external_source , 22 , now , now , nil , 'content' ] ,
86
+ [ 3 , 'external_id' , external_source , 22 , today , today , nil , 'content' ] ,
90
87
  )
91
88
  end
92
89
  end
@@ -107,7 +104,7 @@ module BeetleETL
107
104
 
108
105
  expect(:example_table).to have_values(
109
106
  [ :id , :external_id , :external_source , :foo_id , :created_at , :updated_at , :deleted_at , :payload ] ,
110
- [ 1 , 'external_id' , external_source , 33 , yesterday , now , nil , 'updated content' ] ,
107
+ [ 1 , 'external_id' , external_source , 33 , yesterday , today , nil , 'updated content' ] ,
111
108
  )
112
109
  end
113
110
 
@@ -126,7 +123,7 @@ module BeetleETL
126
123
 
127
124
  expect(:example_table).to have_values(
128
125
  [ :id , :external_id , :external_source , :foo_id , :created_at , :updated_at , :deleted_at , :payload ] ,
129
- [ 1 , 'external_id' , external_source , 33 , yesterday , now , nil , 'updated content' ] ,
126
+ [ 1 , 'external_id' , external_source , 33 , yesterday , today , nil , 'updated content' ] ,
130
127
  )
131
128
  end
132
129
  end
@@ -147,7 +144,7 @@ module BeetleETL
147
144
 
148
145
  expect(:example_table).to have_values(
149
146
  [ :id , :external_id , :external_source , :foo_id , :created_at , :updated_at , :deleted_at , :payload ] ,
150
- [ 1 , 'external_id' , external_source , 22 , yesterday , now , now , 'content' ] ,
147
+ [ 1 , 'external_id' , external_source , 22 , yesterday , today , today , 'content' ] ,
151
148
  )
152
149
  end
153
150
  end
@@ -1,8 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'active_support/core_ext/date/calculations'
4
- require 'active_support/core_ext/numeric/time'
5
-
6
3
  module BeetleETL
7
4
  describe TableDiff do
8
5
 
@@ -14,6 +11,8 @@ module BeetleETL
14
11
  end
15
12
  end
16
13
 
14
+ let(:time_in_past) { Time.new(2020, 3, 23) }
15
+
17
16
  subject { TableDiff.new(config, :example_table) }
18
17
 
19
18
  before do
@@ -60,9 +59,9 @@ module BeetleETL
60
59
  it 'assigns CREATE to new records' do
61
60
 
62
61
  insert_into(:example_table).values(
63
- [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
64
- [ 1 , 'existing' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
65
- [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , 1.day.ago ] ,
62
+ [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
63
+ [ 1 , 'existing' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
64
+ [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , time_in_past ] ,
66
65
  )
67
66
 
68
67
  test_database.run "SELECT setval('public.example_table_id_seq', 99)"
@@ -88,10 +87,10 @@ module BeetleETL
88
87
  except externald_*_id columns and columns not contained in the stage table' do
89
88
 
90
89
  insert_into(:example_table).values(
91
- [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
92
- [ 1 , 'existing_1' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
93
- [ 2 , 'existing_2' , external_source , 'existing content' , 'ignored content' , 2 , nil ] ,
94
- [ 3 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 3 , 1.day.ago ] ,
90
+ [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
91
+ [ 1 , 'existing_1' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
92
+ [ 2 , 'existing_2' , external_source , 'existing content' , 'ignored content' , 2 , nil ] ,
93
+ [ 3 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 3 , time_in_past ] ,
95
94
  )
96
95
 
97
96
  insert_into(subject.stage_table_name.to_sym).values(
@@ -115,9 +114,9 @@ module BeetleETL
115
114
  describe 'transition_delete' do
116
115
  it 'creates records with DELETE that no loger exist in the stage table for the given run' do
117
116
  insert_into(:example_table).values(
118
- [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
119
- [ 1 , 'existing' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
120
- [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , 1.day.ago ] ,
117
+ [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
118
+ [ 1 , 'existing' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
119
+ [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , time_in_past ] ,
121
120
  )
122
121
 
123
122
  subject.transition_delete
@@ -132,9 +131,9 @@ module BeetleETL
132
131
  describe 'transition_reinstate' do
133
132
  it 'assigns REINSTATE to previously deleted records' do
134
133
  insert_into(:example_table).values(
135
- [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
136
- [ 1 , 'existing' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
137
- [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , 1.day.ago ] ,
134
+ [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
135
+ [ 1 , 'existing' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
136
+ [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , time_in_past ] ,
138
137
  )
139
138
 
140
139
  insert_into(subject.stage_table_name.to_sym).values(
@@ -159,7 +158,7 @@ module BeetleETL
159
158
  insert_into(:example_table).values(
160
159
  [ :id , :external_id , :external_source , :payload , :ignored_attribute , :foo_id , :deleted_at ] ,
161
160
  [ 1 , 'existing' , external_source , 'existing content' , 'ignored content' , 1 , nil ] ,
162
- [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , 1.day.ago ] ,
161
+ [ 2 , 'deleted' , external_source , 'deleted content' , 'ignored content' , 2 , time_in_past ] ,
163
162
  )
164
163
 
165
164
  insert_into(subject.stage_table_name.to_sym).values(
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beetle_etl
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luciano Maiwald
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-14 00:00:00.000000000 Z
11
+ date: 2020-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 4.0.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 4.0.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: sequel
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -42,14 +28,14 @@ dependencies:
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - "~>"
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
33
  version: '1.11'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - "~>"
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
40
  version: '1.11'
55
41
  - !ruby/object:Gem::Dependency