module Contentful::DatabaseImporter::JsonGenerator

Json File Generator

Public Class Methods

create_content_type(content_type_definition, result) click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 26
def self.create_content_type(content_type_definition, result)
  prev_ct_definition = result[:contentTypes].find do |ct|
    ct[:id] == content_type_definition[:id]
  end

  if prev_ct_definition
    result[:contentTypes].delete(prev_ct_definition)
    content_type_definition = Support.merge(
      prev_ct_definition, content_type_definition
    )
  end

  result[:contentTypes] << content_type_definition
end
create_entries(resource, content_type_definition, result) click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 41
def self.create_entries(resource, content_type_definition, result)
  result[:entries][content_type_definition[:id]] ||= []
  resource.all.each do |entry|
    create_entry(entry, content_type_definition, result)
  end
end
create_entry(entry, content_type_definition, result) click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 67
def self.create_entry(entry, content_type_definition, result)
  entry_definition = entry.to_bootstrap

  entry_definition = merge_entries(entry_definition, content_type_definition, result)

  result[:assets].concat(entry.associated_assets) unless entry.associated_assets.empty?

  result[:entries][content_type_definition[:id]] << entry_definition
end
generate_json() click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 7
def self.generate_json
  result = { version: 3, contentTypes: [],
             assets: [], entries: {} }

  resources.each do |resource|
    content_type_definition = resource.content_type_definition
    create_content_type(content_type_definition, result)
    create_entries(resource, content_type_definition, result)
  end

  result
end
generate_json!() click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 77
def self.generate_json!
  JSON.pretty_generate(generate_json)
end
merge_entries(entry_definition, content_type_definition, result) click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 54
def self.merge_entries(entry_definition, content_type_definition, result)
  prev_entry = previous_entry(
    entry_definition,
    content_type_definition,
    result
  )

  return entry_definition unless prev_entry

  result[:entries][content_type_definition[:id]].delete(prev_entry)
  Support.merge(prev_entry, entry_definition)
end
previous_entry(entry_definition, content_type_definition, result) click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 48
def self.previous_entry(entry_definition, content_type_definition, result)
  result[:entries][content_type_definition[:id]].find do |e|
    e[:sys][:id] == entry_definition[:sys][:id]
  end
end
resources() click to toggle source
# File lib/contentful/database_importer/json_generator.rb, line 20
def self.resources
  ObjectSpace.each_object(Class).select do |c|
    c.included_modules.include? Resource
  end
end