txdb 2.1.0 → 3.0.0

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: f78d330f2df64d6ccfe5bf87fae14eb81bc2f187
4
- data.tar.gz: 4db1ddc08a4a01c03c2458843d6cd9648ba0a1b3
3
+ metadata.gz: 4a966477654b1b80565361f216d6a1a6a60fceb9
4
+ data.tar.gz: d8e8673ffc3fdd4852512555ca11dccb784a662b
5
5
  SHA512:
6
- metadata.gz: 54034a53d6127b8b372db66fb6f84a8411b7264774ea17f6c637059d3b29020bc87f8b944a886d9d3b48fe01d073c46600ca5b20fb35787ece6dc23f0cd63137
7
- data.tar.gz: d5c9d18a27ac021720af42778f2110d528377d3ce76ecfab743c8e4bd11c299fd5e24984e3cae1d2e4c38d7f6b0fc6a095ab1ca7fb1f824164b28fcd009b7672
6
+ metadata.gz: 6674b957a2fe939d2aa417f1c4ad33c232ebf8c33db1e3f62833cc531a6ce94797e84bacd8d34c99ca5d171d46ba780e01ee348c1b3e4ba4c49d666ba47fe18e
7
+ data.tar.gz: 49a34afa1522fa915039cf2c62efc3f0cde7418c7af0508ab7b8c19d3345b795276ff70243491eafcc4c0585f476e88f2dba20949428a3e2c9e06bfdea3b66f1
@@ -7,13 +7,23 @@ module Txdb
7
7
  module Helpers
8
8
  def origin_table_name(table_name)
9
9
  ActiveSupport::Inflector.pluralize(
10
- table_name.sub(/_translations\z/, '')
11
- )
10
+ origin_table_name_singular(table_name)
11
+ ).to_sym
12
+ end
13
+
14
+ def origin_column_name(table_name)
15
+ "#{origin_table_name_singular(table_name)}_id".to_sym
12
16
  end
13
17
 
14
18
  def resource_slug_for(table)
15
19
  Txgh::Utils.slugify("#{table.database.name}-#{table.name}")
16
20
  end
21
+
22
+ private
23
+
24
+ def origin_table_name_singular(table_name)
25
+ table_name.sub(/_translations\z/, '')
26
+ end
17
27
  end
18
28
 
19
29
  Helpers.extend(Helpers)
@@ -47,12 +47,12 @@ module Txdb
47
47
  end
48
48
 
49
49
  def content
50
- @content ||= { origin_table_name(table.name) => content_for_records }
50
+ @content ||= { table.name => content_for_records }
51
51
  end
52
52
 
53
53
  def content_for_records
54
54
  iterator.each_with_object({}) do |record, ret|
55
- ret[record[:id]] = content_for_record(record)
55
+ ret[record[origin_column]] = content_for_record(record)
56
56
  end
57
57
  end
58
58
 
@@ -66,6 +66,10 @@ module Txdb
66
66
  end
67
67
  end
68
68
 
69
+ def origin_column
70
+ origin_column_name(table.name)
71
+ end
72
+
69
73
  def iterator
70
74
  @iterator ||= Iterators::GlobalizeIterator.new(table)
71
75
  end
@@ -15,23 +15,23 @@ module Txdb
15
15
 
16
16
  def write_content(resource, locale)
17
17
  content = deserialize_content(resource.content)
18
- content = content.fetch(origin_table_name(table.name), {})
18
+ content = content.fetch(table.name, {})
19
19
 
20
- content.each_pair do |id, fields|
21
- update_row(id, fields, locale)
20
+ content.each_pair do |parent_id, fields|
21
+ update_row(parent_id, fields, locale)
22
22
  end
23
23
  end
24
24
 
25
25
  private
26
26
 
27
- def update_row(id, fields, locale)
27
+ def update_row(parent_id, fields, locale)
28
28
  row = table.connection.where(
29
- foreign_key.to_sym => id, locale: locale
29
+ origin_column => parent_id, locale: locale
30
30
  )
31
31
 
32
32
  if row.empty?
33
33
  table.connection << fields
34
- .merge(foreign_key.to_sym => id, locale: locale)
34
+ .merge(origin_column => parent_id, locale: locale)
35
35
  .merge(created_at)
36
36
  .merge(updated_at)
37
37
  else
@@ -57,8 +57,8 @@ module Txdb
57
57
  YAML.load(content)
58
58
  end
59
59
 
60
- def foreign_key
61
- @foreign_key ||= table.name.sub(/_translations/, '_id')
60
+ def origin_column
61
+ origin_column_name(table.name)
62
62
  end
63
63
  end
64
64
 
@@ -29,7 +29,7 @@ module Txdb
29
29
  last_value = record[column]
30
30
  end
31
31
 
32
- counter = last_value + 1
32
+ counter = last_value + 1 if last_value
33
33
  end
34
34
  end
35
35
 
@@ -48,12 +48,13 @@ module Txdb
48
48
  private
49
49
 
50
50
  def records_since(counter)
51
- sql_column = Sequel.expr(column)
51
+ sql_column = Sequel.qualify(table_name, column)
52
52
 
53
53
  table.connection
54
+ .select_all(table_name)
54
55
  .from(table_name)
55
56
  .where { sql_column >= counter }
56
- .order(column)
57
+ .order(sql_column)
57
58
  .limit(batch_size)
58
59
  end
59
60
 
@@ -5,8 +5,22 @@ module Txdb
5
5
 
6
6
  include Backends::Globalize::Helpers
7
7
 
8
- def table_name
9
- origin_table_name(table.name)
8
+ def records_since(counter)
9
+ super
10
+ .join(origin_table, column => origin_column)
11
+ .where(locale_column => table.source_lang)
12
+ end
13
+
14
+ def locale_column
15
+ Sequel.qualify(table_name, :locale)
16
+ end
17
+
18
+ def origin_column
19
+ Sequel.qualify(table_name, origin_column_name(table_name))
20
+ end
21
+
22
+ def origin_table
23
+ Sequel.expr(origin_table_name(table_name))
10
24
  end
11
25
  end
12
26
  end
@@ -1,3 +1,3 @@
1
1
  module Txdb
2
- VERSION = '2.1.0'
2
+ VERSION = '3.0.0'
3
3
  end
@@ -7,12 +7,12 @@ describe Globalize::Helpers, test_config: true do
7
7
  describe '.origin_table_name' do
8
8
  it 'pluralizes and removes the translations suffix' do
9
9
  origin = Globalize::Helpers.origin_table_name('widget_translations')
10
- expect(origin).to eq('widgets')
10
+ expect(origin).to eq(:widgets)
11
11
  end
12
12
 
13
13
  it 'handles unusual pluralizations (via ActiveSupport::Inflector)' do
14
14
  origin = Globalize::Helpers.origin_table_name('ox_translations')
15
- expect(origin).to eq('oxen')
15
+ expect(origin).to eq(:oxen)
16
16
  end
17
17
  end
18
18
 
@@ -11,6 +11,9 @@ describe Globalize::Reader, globalize_config: true do
11
11
  it 'reads data from the given table and returns an array of resources' do
12
12
  sprocket_id = widgets.connection.insert(name: 'sprocket')
13
13
  flange_id = widgets.connection.insert(name: 'flange')
14
+
15
+ widget_translations.connection.insert(widget_id: sprocket_id, locale: 'en', name: 'sprocket')
16
+ widget_translations.connection.insert(widget_id: flange_id, locale: 'en', name: 'flange')
14
17
  widget_translations.connection.insert(widget_id: sprocket_id, locale: 'es', name: 'sproqueta')
15
18
  widget_translations.connection.insert(widget_id: flange_id, locale: 'es', name: 'flango')
16
19
 
@@ -27,9 +30,9 @@ describe Globalize::Reader, globalize_config: true do
27
30
 
28
31
  expect(resource.content).to eq(
29
32
  YAML.dump(
30
- 'widgets' => {
31
- 1 => { 'name' => 'sprocket' },
32
- 2 => { 'name' => 'flange' }
33
+ 'widget_translations' => {
34
+ sprocket_id => { 'name' => 'sprocket' },
35
+ flange_id => { 'name' => 'flange' }
33
36
  }
34
37
  )
35
38
  )
@@ -22,10 +22,15 @@ describe Globalize::Writer, globalize_config: true do
22
22
  context 'with some content' do
23
23
  before(:each) do
24
24
  @sprocket_id = widgets.connection.insert(name: 'sprocket')
25
+
26
+ sprocket_en_id = widget_translations.connection.insert(
27
+ widget_id: @sprocket_id, name: 'sprocket', locale: 'en'
28
+ )
29
+
25
30
  @writer = Globalize::Writer.new(widget_translations)
26
31
 
27
32
  @content = YAML.dump(
28
- 'widgets' => {
33
+ 'widget_translations' => {
29
34
  @sprocket_id => { name: 'sproqueta' }
30
35
  }
31
36
  )
@@ -35,10 +40,10 @@ describe Globalize::Writer, globalize_config: true do
35
40
 
36
41
  it 'inserts the translations into the database' do
37
42
  expect { @writer.write_content(@resource, 'es') }.to(
38
- change { widget_translations.connection.count }.from(0).to(1)
43
+ change { widget_translations.connection.count }.from(1).to(2)
39
44
  )
40
45
 
41
- translation = widget_translations.connection.first
46
+ translation = widget_translations.connection.order(:id).last
42
47
 
43
48
  expect(translation).to include(
44
49
  widget_id: @sprocket_id, name: 'sproqueta', locale: 'es'
@@ -56,7 +61,7 @@ describe Globalize::Writer, globalize_config: true do
56
61
  it 'fills in the created_at and updated_at columns' do
57
62
  Timecop.freeze(Time.now) do
58
63
  @writer.write_content(@resource, 'es')
59
- translation = widget_translations.connection.first
64
+ translation = widget_translations.connection.order(:id).last
60
65
  expect(translation[:created_at].to_i).to eq(Time.now.utc.to_i)
61
66
  expect(translation[:updated_at].to_i).to eq(Time.now.utc.to_i)
62
67
  end
@@ -73,7 +78,7 @@ describe Globalize::Writer, globalize_config: true do
73
78
 
74
79
  # record already exists, so should get updated with new timestamp
75
80
  @writer.write_content(@resource, 'es')
76
- translation = widget_translations.connection.first
81
+ translation = widget_translations.connection.order(:id).last
77
82
  expect(translation[:updated_at].to_i).to eq(today.utc.to_i)
78
83
  end
79
84
  end
@@ -82,14 +87,19 @@ describe Globalize::Writer, globalize_config: true do
82
87
 
83
88
  it 'updates the record if it already exists' do
84
89
  sprocket_id = widgets.connection.insert(name: 'sprocket')
85
- sprocket_trans_id = widget_translations.connection.insert(
90
+
91
+ sprocket_en_id = widget_translations.connection.insert(
92
+ widget_id: sprocket_id, locale: 'en', name: 'sprocket'
93
+ )
94
+
95
+ sprocket_es_id = widget_translations.connection.insert(
86
96
  widget_id: sprocket_id, locale: 'es', name: 'sproqueta'
87
97
  )
88
98
 
89
99
  writer = Globalize::Writer.new(widget_translations)
90
100
 
91
101
  content = YAML.dump(
92
- 'widgets' => {
102
+ 'widget_translations' => {
93
103
  sprocket_id => { name: 'sproqueta2' }
94
104
  }
95
105
  )
@@ -100,7 +110,7 @@ describe Globalize::Writer, globalize_config: true do
100
110
  change { widget_translations.connection.count }
101
111
  )
102
112
 
103
- translation = widget_translations.connection.where(id: sprocket_trans_id).first
113
+ translation = widget_translations.connection.where(id: sprocket_es_id).first
104
114
  expect(translation).to include(name: 'sproqueta2')
105
115
  end
106
116
  end
@@ -13,6 +13,7 @@ describe GlobalizeIterator, test_config: true do
13
13
 
14
14
  create_table(:team_translations) do
15
15
  primary_key :id
16
+ integer :team_id
16
17
  string :name, translate: true
17
18
  string :locale
18
19
  source_lang 'en'
@@ -30,8 +31,10 @@ describe GlobalizeIterator, test_config: true do
30
31
 
31
32
  it 'iterates over the items in the parent table' do
32
33
  teams.each do |team|
33
- teams_table.connection << { name: team }
34
- team_translations_table.connection << { name: "#{team}-es", locale: 'es' }
34
+ team_id = teams_table.connection.insert(name: team)
35
+ team_translations_table.connection.insert(
36
+ name: team, team_id: team_id, locale: 'en'
37
+ )
35
38
  end
36
39
 
37
40
  entries = iterator.map { |entry| entry[:name] }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: txdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-07 00:00:00.000000000 Z
11
+ date: 2016-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport