Skip to content

Commit

Permalink
ResourceBase::Container classes memoize by schemas, not schema access…
Browse files Browse the repository at this point in the history
…or modules
  • Loading branch information
notEthan committed Nov 13, 2023
1 parent f0b9489 commit fa5899d
Showing 1 changed file with 13 additions and 12 deletions.
25 changes: 13 additions & 12 deletions lib/scorpio/resource_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -497,12 +497,19 @@ def call_operation(operation, call_params: nil)

class ResourceBase
class Container
@container_classes = Hash.new do |h, modules|
container_class = Class.new(Container)
modules.each do |mod|
container_class.include(mod)
@container_classes = Hash.new do |h, key|
modules, schemas = key[:modules], key[:schemas]

container_class = Class.new(Container) do
modules.each do |mod|
include(mod)
end

schemas.each do |schema|
include(JSI::SchemaClasses.accessor_module_for_schema(schema, conflicting_modules: modules + [Container]))
end
end
h[modules] = container_class
h[key] = container_class
end

class << self
Expand All @@ -516,13 +523,7 @@ def new_container(object, openapi_document_class, options = {})
container_modules << Container::Array
end

container_modules += object.jsi_schemas.map do |schema|
JSI::SchemaClasses.accessor_module_for_schema(schema,
conflicting_modules: container_modules + [Container],
)
end

container_class = @container_classes[container_modules.freeze]
container_class = @container_classes[{modules: container_modules.freeze, schemas: object.jsi_schemas}]

container_class.new(object, openapi_document_class, options)
end
Expand Down

0 comments on commit fa5899d

Please sign in to comment.