module Contentful::Exporter::Database::JsonExport
Public Instance Methods
asset?(model_name)
click to toggle source
# File lib/database/modules/json_export.rb, line 8 def asset?(model_name) mapping[model_name] && mapping[model_name][:type] == 'asset' end
copy_field?(field_name, model_name)
click to toggle source
# File lib/database/modules/json_export.rb, line 71 def copy_field?(field_name, model_name) mapping[model_name] && mapping[model_name][:copy] && mapping[model_name][:copy][field_name].present? end
copy_field_value(field_name, field_value, model_name, result)
click to toggle source
# File lib/database/modules/json_export.rb, line 49 def copy_field_value(field_name, field_value, model_name, result) copy_field = mapping[model_name][:copy][field_name] result[copy_field] = format_value(field_value.to_s) end
format_value(field_value)
click to toggle source
# File lib/database/modules/json_export.rb, line 54 def format_value(field_value) formatted_value = I18n.transliterate(field_value).tr(' ', '_').underscore formatted_value.underscore.gsub(/\W/, '-').gsub(/\W\z/, '').gsub(/\A\W/, '').gsub('_', '-').gsub('--', '-').gsub('--', '-') end
formatted_field_value(field_name, field_value, model_name)
click to toggle source
# File lib/database/modules/json_export.rb, line 45 def formatted_field_value(field_name, field_value, model_name) has_mapping_value?(field_name, model_name) ? format_value(field_value) : field_value end
has_mapping_for?(field_name, model_name)
click to toggle source
# File lib/database/modules/json_export.rb, line 63 def has_mapping_for?(field_name, model_name) mapping[model_name] && mapping[model_name][:fields][field_name].present? end
has_mapping_value?(field_name, model_name)
click to toggle source
# File lib/database/modules/json_export.rb, line 67 def has_mapping_value?(field_name, model_name) mapping[model_name] && mapping[model_name][:format] && mapping[model_name][:format][field_name].present? end
map_fields(model_name, row)
click to toggle source
# File lib/database/modules/json_export.rb, line 36 def map_fields(model_name, row) row.each_with_object({}) do |(field_name, field_value), result| field_name = mapped_field_name(field_name, model_name) formatted_value = formatted_field_value(field_name, field_value, model_name) result[field_name] = formatted_value copy_field_value(field_name, formatted_value, model_name, result) if copy_field?(field_name, model_name) end end
mapped_field_name(field_name, model_name)
click to toggle source
# File lib/database/modules/json_export.rb, line 59 def mapped_field_name(field_name, model_name) has_mapping_for?(field_name, model_name) ? mapping[model_name][:fields][field_name] : field_name end
model_id(model_name, content_type_name, id)
click to toggle source
# File lib/database/modules/json_export.rb, line 31 def model_id(model_name, content_type_name, id) prefix = mapping[model_name][:prefix_id] || '' "#{prefix}#{content_type_name}_#{id}" end
save_object_to_file(table, content_type_name, model_name, type)
click to toggle source
# File lib/database/modules/json_export.rb, line 12 def save_object_to_file(table, content_type_name, model_name, type) content_type_name = I18n.transliterate(content_type_name).underscore.tr(' ', '_') create_directory("#{type}/#{content_type_name}") config.db[table].each_with_index do |row, index| index = index + 1 result = transform_row_into_hash(model_name, content_type_name, row, index) write_json_to_file("#{type}/#{content_type_name}/#{result[:id]}.json", result) end end
transform_row_into_hash(model_name, content_type_name, row, index)
click to toggle source
# File lib/database/modules/json_export.rb, line 22 def transform_row_into_hash(model_name, content_type_name, row, index) id = row[:id] || index logger.info "Saving #{content_type_name} - id: #{id}" db_object = map_fields(model_name, row) db_object[:id] = model_id(model_name, content_type_name, id) db_object[:database_id] = id db_object end