lib/eco/api/session.rb in eco-helpers-2.0.18 vs lib/eco/api/session.rb in eco-helpers-2.0.19
- old
+ new
@@ -72,16 +72,19 @@
# @return [Eco::API::Common::People::EntryFactory] associated to `schema`.
# If `schema` is `nil` or not provided it uses the currently associated to the `session`
def entry_factory(schema: nil)
schema = to_schema(schema) || self.schema
return @entry_factories[schema&.id] if @entry_factories.key?(schema&.id)
+ unless @entry_factories.empty?
+ @entry_factories[schema&.id] = @entry_factories.values.first.newFactory(schema: schema)
+ return @entry_factories[schema&.id]
+ end
mappings = []
if map_file = config.people.fields_mapper
mappings = map_file ? file_manager.load_json(map_file) : []
end
-
@entry_factories[schema&.id] = Eco::API::Common::People::EntryFactory.new(
enviro,
schema: schema,
person_parser: config.people.parser,
attr_map: Eco::Data::Mapper.new(mappings)
@@ -125,10 +128,10 @@
# Builds the entry for the given data.
# @see Eco::API::Common::People::EntryFactory#new
# @return [Eco::API::Common::People::PersonEntry] parsed entry.
def new_entry(data, dependencies: {})
- entry_factory.new(data, dependencies: dependencies)
+ entry_factory(schema: data&.details&.schema_id).new(data, dependencies: dependencies)
end
# @see Eco::API::Common::People::EntryFactory#entries
# @param (see Eco::API::Common::People::EntryFactory#entries)
# @return [Eco::API::Common::People::Entries] collection of entries.