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