module Contentful::DatabaseImporter::Resource
Resource
for mapping Database Tables to Contentful
Content Types and Entries
Attributes
associated_assets[R]
bootstrap_fields[R]
excluded_fields[R]
index[R]
Public Class Methods
included(base)
click to toggle source
# File lib/contentful/database_importer/resource.rb, line 19 def self.included(base) base.extend(ResourceClassMethods) base.extend(ResourceFieldClassMethods) base.extend(ResourceBootstrapClassMethods) end
new(row, index = 0)
click to toggle source
# File lib/contentful/database_importer/resource.rb, line 30 def initialize(row, index = 0) @index = index @bootstrap_fields = {} @excluded_fields = {} @raw = row @associated_assets = [] row.each do |db_name, value| process_row_field(db_name, value) end process_relationships end
Public Instance Methods
id()
click to toggle source
# File lib/contentful/database_importer/resource.rb, line 81 def id if self.class.id_generator.nil? self.class.id_generator = IdGenerator::Base.new( self.class.default_generator_options ) end self.class.id_generator.run(self, index) end
pre_process(field_definition, value)
click to toggle source
# File lib/contentful/database_importer/resource.rb, line 66 def pre_process(field_definition, value) return value unless field_definition[:pre_process] transformation = field_definition[:pre_process] return send(transformation, value) if transformation.is_a? ::Symbol return transformation.call(value) if transformation.respond_to?(:call) raise rescue StandardError error = 'Pre Process could not be done for ' error += "#{field_definition[:maps_to]} - #{transformation}" raise error end
process_relationships()
click to toggle source
# File lib/contentful/database_importer/resource.rb, line 59 def process_relationships self.class.relationship_fields.each do |relationship_field_definition| relations = fetch_relations(relationship_field_definition) @bootstrap_fields[relationship_field_definition[:maps_to]] = relations end end
process_row_field(db_name, value)
click to toggle source
# File lib/contentful/database_importer/resource.rb, line 44 def process_row_field(db_name, value) field_definition = self.class.fields.find { |f| f[:db_name] == db_name } return unless field_definition value = pre_process(field_definition, value) value = coerce(field_definition, value) if field_definition[:exclude_from_output] @excluded_fields[field_definition[:maps_to]] = value else @bootstrap_fields[field_definition[:maps_to]] = value end end