Class: Foobara::RemoteImports::ImportType
- Includes:
- ImportBase
- Defined in:
- foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_type.rb
Constant Summary
Constants included from TruncatedInspect
Instance Attribute Summary
Attributes included from ImportBase
#manifest_data, #manifest_to_import, #manifests_to_import
Attributes included from CommandPatternImplementation::Concerns::Subcommands
Attributes included from CommandPatternImplementation::Concerns::Runtime
Attributes included from CommandPatternImplementation::Concerns::Errors
Attributes included from CommandPatternImplementation::Concerns::Inputs
Instance Method Summary collapse
- #deanonymize_models? ⇒ Boolean
- #find_manifests_to_import ⇒ Object
-
#import_object_from_manifest ⇒ Object
TODO: break this method up?.
Methods included from ImportBase
#already_exists?, #already_imported, #cache_file_path, #cache_key, #cache_manifest, #cached?, #determine_manifests_to_import, #execute, #filter_manifests_to_import, #import_objects_from_manifests, #imported_objects, included, #load_cached_manifest, #load_manifest, #load_manifest_from_url, #root_manifest, #should_cache?, #validate, #validate_manifest
Methods inherited from Command
Methods included from Concern
foobara_class_methods_module_for, foobara_concern?, included
Methods included from CommandPatternImplementation::Concerns::Reflection
Methods included from CommandPatternImplementation::Concerns::DomainMappers
#domain_map, #domain_map!, #run_mapped_subcommand!
Methods included from CommandPatternImplementation::Concerns::Subcommands
#run_subcommand!, #subcommand?
Methods included from CommandPatternImplementation::Concerns::Entities
Methods included from CommandPatternImplementation::Concerns::Transactions
#auto_detect_current_transactions, #commit_transaction, #open_transaction, #opened_transactions, #relevant_entity_classes, #rollback_transaction, #transactions
Methods included from CommandPatternImplementation::Concerns::StateMachine
Methods included from CommandPatternImplementation::Concerns::Runtime
#execute, #halt!, #run, #run!, #run_execute, #succeed, #success?, #validate, #validate_records
Methods included from CommandPatternImplementation::Concerns::Errors
Methods included from CommandPatternImplementation::Concerns::Inputs
#cast_and_validate_inputs, #initialize, #method_missing, #respond_to_missing?, #respond_to_missing_for_inputs?
Methods included from TruncatedInspect
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Foobara::CommandPatternImplementation::Concerns::Inputs
Instance Method Details
#deanonymize_models? ⇒ Boolean
96 97 98 |
# File 'foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_type.rb', line 96 def deanonymize_models? deanonymize_models end |
#find_manifests_to_import ⇒ Object
8 9 10 |
# File 'foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_type.rb', line 8 def find_manifests_to_import root_manifest.types end |
#import_object_from_manifest ⇒ Object
TODO: break this method up?
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_type.rb', line 13 def import_object_from_manifest existing_type = Foobara..( manifest_to_import.reference, mode: Namespace::LookupMode::ABSOLUTE ) # TODO: might this be a sign of a name collision? Maybe better to give a meaningful error if the type isn't in # #already_imported ?? return if existing_type domain_manifest = manifest_to_import.domain run_subcommand!( ImportDomain, raw_manifest: manifest_data, to_import: domain_manifest.reference, already_imported: ) domain_manifest = manifest_to_import.domain domain = if domain_manifest.global? GlobalDomain else Foobara..( domain_manifest.reference, mode: Namespace::LookupMode::ABSOLUTE ) end manifest_to_import.types_depended_on.each do |depended_on_type| run_subcommand!( ImportType, raw_manifest: manifest_data, to_import: depended_on_type.reference, already_imported: ) end containing_module_name = manifest_to_import.scoped_full_path[0..-2].join("::") unless containing_module_name.empty? Util.make_module_p(containing_module_name, tag: true) end # Warning: cannot desugarize this because unfortunately desugarizing an entity declaration will actually # create the entity class, which should be considered a bug. declaration_data = manifest_to_import.declaration_data # TODO: how do we solve this for :active_record type?? if declaration_data["type"] == "entity" declaration_data = Util.deep_dup(declaration_data) declaration_data["type"] = "detached_entity" declaration_data["mutable"] = false primary_key_attribute = declaration_data["primary_key"] required = declaration_data["attributes_declaration"]["required"] required << primary_key_attribute unless required.include?(primary_key_attribute) model_base_class = declaration_data["model_base_class"] unless model_base_class == "Foobara::Entity" # :nocov: raise "Expected model base class to be Foobara::Entity, but was #{model_base_class}" # :nocov: end declaration_data["model_base_class"] = "Foobara::DetachedEntity" end type = domain.(declaration_data) if deanonymize_models? && type.extends?(:model) Foobara::Model.deanonymize_class(type.target_class) end unless domain.(type) domain.(manifest_to_import.scoped_path, type) end type end |