Module: SqlGenius::DatabaseAnalysis
- Extended by:
- ActiveSupport::Concern
- Included in:
- QueriesController
- Defined in:
- app/controllers/concerns/sql_genius/database_analysis.rb
Instance Method Summary collapse
- #duplicate_indexes ⇒ Object
- #query_stats ⇒ Object
- #server_overview ⇒ Object
- #table_sizes ⇒ Object
- #unused_indexes ⇒ Object
Instance Method Details
#duplicate_indexes ⇒ Object
7 8 9 10 11 12 |
# File 'app/controllers/concerns/sql_genius/database_analysis.rb', line 7 def duplicate_indexes duplicates = SqlGenius::Core::Analysis::DuplicateIndexes .new(rails_connection, blocked_tables: sql_genius_config.blocked_tables) .call render(json: duplicates) end |
#query_stats ⇒ Object
19 20 21 22 23 24 25 26 |
# File 'app/controllers/concerns/sql_genius/database_analysis.rb', line 19 def query_stats sort = params[:sort].to_s limit = params.fetch(:limit, SqlGenius::Core::Analysis::QueryStats::MAX_LIMIT).to_i queries = SqlGenius::Core::Analysis::QueryStats.new(rails_connection).call(sort: sort, limit: limit) render(json: queries) rescue ActiveRecord::StatementInvalid => e render(json: { error: "#{query_stats_source_name} #{e..split(":").last.strip}" }, status: :unprocessable_entity) end |
#server_overview ⇒ Object
42 43 44 45 46 47 |
# File 'app/controllers/concerns/sql_genius/database_analysis.rb', line 42 def server_overview overview = SqlGenius::Core::Analysis::ServerOverview.new(rails_connection).call render(json: overview) rescue => e render(json: { error: "Failed to load server overview: #{e.}" }, status: :unprocessable_entity) end |
#table_sizes ⇒ Object
14 15 16 17 |
# File 'app/controllers/concerns/sql_genius/database_analysis.rb', line 14 def table_sizes tables = SqlGenius::Core::Analysis::TableSizes.new(rails_connection).call render(json: tables) end |
#unused_indexes ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/controllers/concerns/sql_genius/database_analysis.rb', line 28 def unused_indexes result = SqlGenius::Core::Analysis::UnusedIndexes.new( rails_connection, min_scans: sql_genius_config.min_unused_index_scans, ).call render(json: { indexes: result.indexes, stats_reset_at: result.stats_reset_at, min_scans: result.min_scans, }) rescue ActiveRecord::StatementInvalid => e render(json: { error: "#{unused_indexes_source_name} #{e..split(":").last.strip}" }, status: :unprocessable_entity) end |