Class: Ask::Rails::Harness::Tools::SchemaGraph

Inherits:
Ask::Rails::Harness::Tool show all
Defined in:
lib/ask/rails/harness/tools/schema_graph.rb

Constant Summary collapse

TABLE_EXCLUSIONS =
%w[schema_migrations ar_internal_metadata].freeze

Instance Method Summary collapse

Methods inherited from Ask::Rails::Harness::Tool

#call, #rails_root, session_id, session_id=

Instance Method Details

#execute(detail: "all") ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ask/rails/harness/tools/schema_graph.rb', line 17

def execute(detail: "all")
  models = discover_ar_models

  result = {
    summary: {
      model_count: models.size,
      table_count: models.map { |m| m.table_name }.uniq.size,
      association_count: models.sum { |m| m.reflect_on_all_associations.size }
    },
    models: %w[all models].include?(detail) ? build_model_details(models, detail) : nil,
    associations: %w[all associations].include?(detail) ? build_association_graph(models) : nil,
    tables: %w[all tables].include?(detail) ? build_table_details(detail) : nil
  }

  result
end