yaml_db 0.4.2 → 0.5.0

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: 5995c6d00a829354fa29d06db8d4de7541dd42ab
4
- data.tar.gz: 3c701640c43102149a3213e06aa4fc7e436f582f
3
+ metadata.gz: 8a4e39c17d583195897d45248f0aca67b9cbdb31
4
+ data.tar.gz: fdcf74702568fb3fafe04cd4956a0c25cf9f4c48
5
5
  SHA512:
6
- metadata.gz: 3670c4e9264ec1af0f5038c655f776b927780c3c0cfdb8a33b1e762a86efea1c0e38d582160ce8eaa38d3252c8c0f7dce02a036ebc25d62e9cba7e35ac010ad5
7
- data.tar.gz: 06c756dc6c804f5094f8475220f505002dc70f1fbd2463b6512a09f8293e695995c6c1753ded7ea84d1b343b4c2cdfd42ea1e343d3580ee90f32d6b455d068b4
6
+ metadata.gz: 228b520f88360a5fc698f5809bc0b917c6669d74156c7d0f174631c59c76d8bcb3b09e9eaa982cff136f5bf8a1e9ea59cc99391a6bc570d3548c2f39c998ea8b
7
+ data.tar.gz: 0e329ffcd25e425cd75da70cc8ebc51299c14308d3614169b6692f186c876c725ce3b6da9e63657a698655e5d3acfd0b649d029d0d677dc477f6dbea2e053f05
@@ -141,6 +141,9 @@ module YamlDb
141
141
  ActiveRecord::Base.connection.quote_table_name(table)
142
142
  end
143
143
 
144
+ def self.quote_column(column)
145
+ ActiveRecord::Base.connection.quote_column_name(column)
146
+ end
144
147
  end
145
148
 
146
149
  class Dump
@@ -179,12 +182,12 @@ module YamlDb
179
182
  def self.each_table_page(table, records_per_page=1000)
180
183
  total_count = table_record_count(table)
181
184
  pages = (total_count.to_f / records_per_page).ceil - 1
182
- id = table_column_names(table).first
185
+ key = sort_key(table)
183
186
  boolean_columns = Utils.boolean_columns(table)
184
187
  quoted_table_name = Utils.quote_table(table)
185
188
 
186
189
  (0..pages).to_a.each do |page|
187
- query = Arel::Table.new(table).order(id).skip(records_per_page*page).take(records_per_page).project(Arel.sql('*'))
190
+ query = Arel::Table.new(table).order(key).skip(records_per_page*page).take(records_per_page).project(Arel.sql('*'))
188
191
  records = ActiveRecord::Base.connection.select_all(query.to_sql)
189
192
  records = Utils.convert_booleans(records, boolean_columns)
190
193
  yield records
@@ -195,7 +198,17 @@ module YamlDb
195
198
  ActiveRecord::Base.connection.select_one("SELECT COUNT(*) FROM #{Utils.quote_table(table)}").values.first.to_i
196
199
  end
197
200
 
198
- end
201
+ # Just return the first column as sort key unless the table looks like a
202
+ # standard HABTM join table, in which case add the second "id column"
203
+ def self.sort_key(table)
204
+ first_column, second_column = table_column_names(table)
199
205
 
206
+ if [first_column, second_column].all? { |name| name =~ /_id$/ }
207
+ [Utils.quote_column(first_column), Utils.quote_column(second_column)]
208
+ else
209
+ Utils.quote_column(first_column)
210
+ end
211
+ end
212
+ end
200
213
  end
201
214
  end
@@ -1,3 +1,3 @@
1
1
  module YamlDb
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Wiggins
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-02 00:00:00.000000000 Z
12
+ date: 2017-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  requirements: []
127
127
  rubyforge_project:
128
- rubygems_version: 2.4.8
128
+ rubygems_version: 2.6.8
129
129
  signing_key:
130
130
  specification_version: 4
131
131
  summary: yaml_db allows export/import of database into/from yaml files