class Neo4Apis::CLI::ActiveRecord
Constants
- NEO4APIS_CLIENT_CLASS
Public Instance Methods
all_models()
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 49 def all_models setup Rails.application.eager_load! import_models_or_tables(*::ActiveRecord::Base.descendants) end
all_tables()
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 42 def all_tables setup import_models_or_tables(*::ActiveRecord::Base.connection.tables) end
models(*models_or_table_names)
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 35 def models(*models_or_table_names) setup import_models_or_tables(*models_or_table_names) end
tables(*models_or_table_names)
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 28 def tables(*models_or_table_names) setup import_models_or_tables(*models_or_table_names) end
Private Instance Methods
active_record_config()
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 119 def active_record_config require 'yaml' YAML.load(File.read(options[:active_record_config_path]))[options[:active_record_environment]] end
debug_log(*messages)
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 59 def debug_log(*messages) return unless options[:debug] puts(*messages) end
import_association?(type)
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 114 def import_association?(type) options[:"import_#{type}"].nil? ? options[:import_all_associations] : options[:"import_#{type}"] end
import_models_or_tables(*models_or_table_names)
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 65 def import_models_or_tables(*models_or_table_names) model_classes = models_or_table_names.map(&method(:get_model)) puts 'Importing tables: ' + model_classes.map(&:table_name).join(', ') model_classes.each do |model_class| NEO4APIS_CLIENT_CLASS.model_importer(model_class) end neo4apis_client.batch do model_classes.each do |model_class| query = model_class.all # Eager load association for faster import include_list = include_list_for_model(model_class) query = query.includes(*include_list) if include_list.present? query.find_each do |object| neo4apis_client.import model_class.name.to_sym, object end end end end
include_list_for_model(model_class)
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 89 def include_list_for_model(model_class) model_class.reflect_on_all_associations.map do |association_reflection| association_reflection.name.to_sym if import_association?(association_reflection.macro) end.compact.tap do |include_list| debug_log 'include_list', include_list.inspect end end
neo4apis_client()
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 107 def neo4apis_client @neo4apis_client ||= NEO4APIS_CLIENT_CLASS.new(specified_neo4j_session, import_belongs_to: import_association?(:belongs_to), import_has_one: import_association?(:has_one), import_has_many: import_association?(:has_many)) end
setup()
click to toggle source
# File lib/neo4apis/cli/activerecord.rb, line 97 def setup if File.exist?(options[:startup_environment]) require options[:startup_environment] else ::ActiveRecord::Base.establish_connection(active_record_config) end end