sq-dbsync 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: