sq-dbsync 1.0.9 → 1.0.10

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 53e37af6e23d60d5272a1098971e963e5aac3858
4
+ data.tar.gz: 382ef96adfef3c9e5fc0ede936ced2d64f5bb611
5
+ SHA512:
6
+ metadata.gz: 692c020ad723ac6587f56fdfdcabc0e14441fccddc92bd2513926f1f2f61bf0f3945316f5f894667595c08a1b8fbe57e0d679bbc716483273c73ee4e5abdae48
7
+ data.tar.gz: e86c303e423f7312e13d25fa917d0886c745b49e7eaf81fbeb549649444f77cdd151397ed6a1524329d0bdc206064d366f29958ed923ed32e9f77def9e4aa749
@@ -52,8 +52,6 @@ module Sq::Dbsync
52
52
  private
53
53
 
54
54
  def filter_columns
55
- source = plan.source_db
56
- source_columns = source.hash_schema(plan).keys
57
55
  plan.columns = resolve_columns(plan, source_columns)
58
56
  end
59
57
 
@@ -71,8 +71,6 @@ module Sq::Dbsync
71
71
  end
72
72
 
73
73
  def filter_columns
74
- source = plan.source_db
75
- source_columns = source.hash_schema(plan).keys
76
74
  plan.columns = resolve_columns(plan, source_columns) &
77
75
  (target_columns || source_columns)
78
76
  end
@@ -66,15 +66,31 @@ module Sq::Dbsync
66
66
  attr_reader :target, :plan, :registry, :logger, :now
67
67
 
68
68
  def prepare
69
+ return false unless source_table_exists?
70
+ return false unless timestamp_column_exists?
71
+
72
+ add_schema_to_table_plan(plan)
73
+ plan.prefixed_table_name = (prefix + plan.table_name.to_s).to_sym
74
+ filter_columns
75
+ plan
76
+ end
77
+
78
+ def timestamp_column_exists?
79
+ columns = resolve_columns(plan, source_columns)
80
+ plan.timestamp ||= ([:updated_at, :created_at] & columns)[0]
81
+ unless plan.timestamp
82
+ logger.log("%s has no timestamp columns" % plan.source_table_name)
83
+ return false
84
+ end
85
+ true
86
+ end
87
+
88
+ def source_table_exists?
69
89
  unless plan.source_db.table_exists?(plan.source_table_name)
70
90
  logger.log("%s does not exist" % plan.source_table_name)
71
91
  return false
72
92
  end
73
- add_schema_to_table_plan(plan)
74
- plan.prefixed_table_name = (prefix + plan.table_name.to_s).to_sym
75
- filter_columns
76
- plan.timestamp ||=
77
- ([:updated_at, :created_at] & plan.columns)[0]
93
+ true
78
94
  end
79
95
 
80
96
  def ensure_target_exists
@@ -96,6 +112,10 @@ module Sq::Dbsync
96
112
  end
97
113
  end
98
114
 
115
+ def source_columns
116
+ plan.source_db.hash_schema(plan).keys
117
+ end
118
+
99
119
  def extract_to_file(since)
100
120
  plan.source_db.ensure_connection
101
121
  plan.source_db.set_lock_timeout(10)
@@ -48,8 +48,6 @@ module Sq::Dbsync
48
48
  private
49
49
 
50
50
  def filter_columns
51
- source = plan.source_db
52
- source_columns = source.hash_schema(plan).keys
53
51
  plan.columns = resolve_columns(plan, source_columns) &
54
52
  (target_columns || source_columns)
55
53
  end
@@ -1,5 +1,5 @@
1
1
  module Sq
2
2
  module Dbsync
3
- VERSION = '1.0.9'
3
+ VERSION = '1.0.10'
4
4
  end
5
5
  end
@@ -138,7 +138,6 @@ describe SQD::IncrementalLoadAction do
138
138
  should == [['new record']]
139
139
  end
140
140
 
141
-
142
141
  describe 'with custom timestamp' do
143
142
  let(:table_plan) {{
144
143
  table_name: :test_table,
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sq-dbsync
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
5
- prerelease:
4
+ version: 1.0.10
6
5
  platform: ruby
7
6
  authors:
8
7
  - Xavier Shay
@@ -10,12 +9,11 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-06-01 00:00:00.000000000 Z
12
+ date: 2013-11-26 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rspec
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ~>
29
26
  - !ruby/object:Gem::Version
@@ -31,65 +28,57 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rake
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ! '>='
32
+ - - '>='
37
33
  - !ruby/object:Gem::Version
38
34
  version: '0'
39
35
  type: :development
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ! '>='
39
+ - - '>='
45
40
  - !ruby/object:Gem::Version
46
41
  version: '0'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: simplecov
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ! '>='
46
+ - - '>='
53
47
  - !ruby/object:Gem::Version
54
48
  version: '0'
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ! '>='
53
+ - - '>='
61
54
  - !ruby/object:Gem::Version
62
55
  version: '0'
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: cane
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
- - - ! '>='
60
+ - - '>='
69
61
  - !ruby/object:Gem::Version
70
62
  version: '0'
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
- - - ! '>='
67
+ - - '>='
77
68
  - !ruby/object:Gem::Version
78
69
  version: '0'
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: sequel
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
- - - ! '>='
74
+ - - '>='
85
75
  - !ruby/object:Gem::Version
86
76
  version: '0'
87
77
  type: :runtime
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
- - - ! '>='
81
+ - - '>='
93
82
  - !ruby/object:Gem::Version
94
83
  version: '0'
95
84
  description: Column based, timestamp replication of MySQL and Postgres databases.
@@ -145,27 +134,26 @@ files:
145
134
  - sq-dbsync.gemspec
146
135
  homepage: http://github.com/square/sq-dbsync
147
136
  licenses: []
137
+ metadata: {}
148
138
  post_install_message:
149
139
  rdoc_options: []
150
140
  require_paths:
151
141
  - lib
152
142
  required_ruby_version: !ruby/object:Gem::Requirement
153
- none: false
154
143
  requirements:
155
- - - ! '>='
144
+ - - '>='
156
145
  - !ruby/object:Gem::Version
157
146
  version: '0'
158
147
  required_rubygems_version: !ruby/object:Gem::Requirement
159
- none: false
160
148
  requirements:
161
- - - ! '>='
149
+ - - '>='
162
150
  - !ruby/object:Gem::Version
163
151
  version: '0'
164
152
  requirements: []
165
153
  rubyforge_project:
166
- rubygems_version: 1.8.25
154
+ rubygems_version: 2.1.11
167
155
  signing_key:
168
- specification_version: 3
156
+ specification_version: 4
169
157
  summary: Column based, timestamp replication of MySQL and Postgres databases. Uses
170
158
  Ruby for the glue code but pushes the heavy lifting on to the database.
171
159
  test_files: