Class: Ask::Ruby::Harness::Tools::SchemaGraph

Inherits:
Ask::Ruby::Harness::Tool show all
Defined in:
lib/ask/ruby/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::Ruby::Harness::Tool

#app_root, #call, 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/ruby/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