Class: YamlDb::SerializationHelper::Dump
- Inherits:
-
Object
- Object
- YamlDb::SerializationHelper::Dump
- Defined in:
- lib/yaml_db/serialization_helper.rb
Direct Known Subclasses
Class Method Summary collapse
- .after_table(io, table) ⇒ Object
- .before_table(io, table) ⇒ Object
- .dump(io) ⇒ Object
- .dump_table(io, table) ⇒ Object
- .each_table_page(table, records_per_page = 1000) ⇒ Object
- .table_column_names(table) ⇒ Object
- .table_record_count(table) ⇒ Object
- .tables ⇒ Object
Class Method Details
.after_table(io, table) ⇒ Object
159 160 161 |
# File 'lib/yaml_db/serialization_helper.rb', line 159 def self.after_table(io, table) end |
.before_table(io, table) ⇒ Object
147 148 149 |
# File 'lib/yaml_db/serialization_helper.rb', line 147 def self.before_table(io, table) end |
.dump(io) ⇒ Object
151 152 153 154 155 156 157 |
# File 'lib/yaml_db/serialization_helper.rb', line 151 def self.dump(io) tables.each do |table| before_table(io, table) dump_table(io, table) after_table(io, table) end end |
.dump_table(io, table) ⇒ Object
167 168 169 170 171 172 |
# File 'lib/yaml_db/serialization_helper.rb', line 167 def self.dump_table(io, table) return if table_record_count(table).zero? dump_table_columns(io, table) dump_table_records(io, table) end |
.each_table_page(table, records_per_page = 1000) ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/yaml_db/serialization_helper.rb', line 179 def self.each_table_page(table, records_per_page=1000) total_count = table_record_count(table) pages = (total_count.to_f / records_per_page).ceil - 1 id = table_column_names(table).first boolean_columns = Utils.boolean_columns(table) quoted_table_name = Utils.quote_table(table) (0..pages).to_a.each do |page| query = Arel::Table.new(table).order(id).skip(records_per_page*page).take(records_per_page).project(Arel.sql('*')) records = ActiveRecord::Base.connection.select_all(query.to_sql) records = Utils.convert_booleans(records, boolean_columns) yield records end end |
.table_column_names(table) ⇒ Object
174 175 176 |
# File 'lib/yaml_db/serialization_helper.rb', line 174 def self.table_column_names(table) ActiveRecord::Base.connection.columns(table).map { |c| c.name } end |
.table_record_count(table) ⇒ Object
194 195 196 |
# File 'lib/yaml_db/serialization_helper.rb', line 194 def self.table_record_count(table) ActiveRecord::Base.connection.select_one("SELECT COUNT(*) FROM #{Utils.quote_table(table)}").values.first.to_i end |
.tables ⇒ Object
163 164 165 |
# File 'lib/yaml_db/serialization_helper.rb', line 163 def self.tables ActiveRecord::Base.connection.tables.reject { |table| ['schema_info', 'schema_migrations'].include?(table) } end |