Class: Foobara::RemoteImports::ImportCommand

Inherits:
Command
  • Object
show all
Includes:
ImportBase
Defined in:
foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_command.rb

Constant Summary

Constants included from TruncatedInspect

TruncatedInspect::MAX_LENGTH

Instance Attribute Summary

Attributes included from ImportBase

#manifest_data, #manifest_to_import, #manifests_to_import

Attributes included from CommandPatternImplementation::Concerns::Subcommands

#is_subcommand

Attributes included from CommandPatternImplementation::Concerns::Runtime

#exception, #outcome

Attributes included from CommandPatternImplementation::Concerns::Errors

#error_collection

Attributes included from CommandPatternImplementation::Concerns::Inputs

#inputs, #raw_inputs

Instance Method Summary collapse

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

install!, reset_all

Methods included from Concern

foobara_class_methods_module_for, foobara_concern?, included

Methods included from CommandPatternImplementation::Concerns::Reflection

#initialize

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

#load_entities, #load_records

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

#state_machine

Methods included from CommandPatternImplementation::Concerns::Runtime

#execute, #halt!, #run, #run!, #run_execute, #succeed, #success?, #validate, #validate_records

Methods included from CommandPatternImplementation::Concerns::Errors

#initialize

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

#inspect, truncating

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Foobara::CommandPatternImplementation::Concerns::Inputs

Instance Method Details

#build_commandObject



73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_command.rb', line 73

def build_command
  url_base = root_manifest.["url"].gsub(/\/manifest$/, "")

  RemoteCommand.subclass(
    url_base:,
    description: manifest_to_import.description,
    inputs: manifest_to_import.inputs_type.relevant_manifest,
    result: manifest_to_import.result_type.relevant_manifest,
    possible_errors: manifest_to_import.possible_errors,
    name: manifest_to_import.reference,
    base: base_command_class
  )
end

#build_errorsObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_command.rb', line 53

def build_errors
  manifest_to_import.possible_errors.each_value do |possible_error|
    error = possible_error.error

    existing_error = Foobara.foobara_root_namespace.foobara_lookup_error(
      error.reference,
      mode: Namespace::LookupMode::ABSOLUTE
    )

    next if existing_error

    run_subcommand!(
      ImportError,
      raw_manifest: manifest_data,
      to_import: error.reference,
      already_imported:
    )
  end
end

#find_manifests_to_importObject



17
18
19
# File 'foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_command.rb', line 17

def find_manifests_to_import
  root_manifest.commands
end

#import_object_from_manifestObject



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
# File 'foobara-remote-imports-0.0.11/src/foobara/remote_imports/import_command.rb', line 21

def import_object_from_manifest
  existing_command = Foobara.foobara_root_namespace.foobara_lookup_command(
    manifest_to_import.reference,
    mode: Namespace::LookupMode::ABSOLUTE
  )

  return if existing_command

  domain_manifest = manifest_to_import.domain

  run_subcommand!(
    ImportDomain,
    raw_manifest: manifest_data,
    to_import: domain_manifest.reference,
    already_imported:
  )

  Util.make_class_p(manifest_to_import.reference, base_command_class)

  manifest_to_import.types_depended_on.each do |type|
    run_subcommand!(
      ImportType,
      raw_manifest: manifest_data,
      to_import: type.reference,
      already_imported:
    )
  end

  build_errors
  build_command
end