Class: Dbviewer::HomeController
Instance Method Summary
collapse
#handle_database_error, #log_error
#calculate_schema_size, #current_table?, #database_manager, #execute_query, #export_table_to_csv, #fetch_database_analytics, #fetch_filtered_record_count, #fetch_mini_erd_for_table, #fetch_table_columns, #fetch_table_metadata, #fetch_table_record_count, #fetch_table_records, #fetch_table_relationships, #fetch_tables_with_stats, #get_database_name, #prepare_query, #safe_quote_table_name, #table_query_operations
Instance Method Details
#analytics ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'app/controllers/dbviewer/home_controller.rb', line 8
def analytics
analytics_data = fetch_database_analytics
analytics_data.delete(:total_records)
analytics_data.delete(:largest_tables)
analytics_data.delete(:empty_tables)
analytics_data.delete(:avg_records_per_table)
respond_to do |format|
format.json { render json: analytics_data }
end
end
|
#database_size ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'app/controllers/dbviewer/home_controller.rb', line 51
def database_size
begin
size = calculate_schema_size
respond_to do |format|
format.json { render json: { schema_size: size } }
end
rescue => e
Rails.logger.error("Error calculating schema size: #{e.message}")
respond_to do |format|
format.json { render json: { schema_size: nil, error: e.message }, status: :internal_server_error }
end
end
end
|
#index ⇒ Object
3
4
5
6
|
# File 'app/controllers/dbviewer/home_controller.rb', line 3
def index
end
|
#recent_queries ⇒ Object
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'app/controllers/dbviewer/home_controller.rb', line 81
def recent_queries
@recent_queries = if Dbviewer.configuration.enable_query_logging
Dbviewer::Logger.instance.recent_queries(limit: 10)
else
[]
end
respond_to do |format|
format.json do
render json: {
enabled: Dbviewer.configuration.enable_query_logging,
queries: @recent_queries
}
end
end
end
|
#records ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'app/controllers/dbviewer/home_controller.rb', line 66
def records
tables = fetch_tables_with_stats(include_record_counts: true)
records_data = {
total_records: tables.sum { |t| t[:record_count] },
largest_tables: tables.sort_by { |t| -t[:record_count] }.first(10),
empty_tables: tables.select { |t| t[:record_count] == 0 },
avg_records_per_table: tables.any? ? (tables.sum { |t| t[:record_count] }.to_f / tables.size).round(1) : 0
}
respond_to do |format|
format.json { render json: records_data }
end
end
|
#relationships_count ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'app/controllers/dbviewer/home_controller.rb', line 30
def relationships_count
begin
tables = fetch_tables_with_stats(include_record_counts: false)
total_relationships = 0
tables.each do |table|
metadata = fetch_table_metadata(table[:name])
total_relationships += metadata[:foreign_keys].size if metadata && metadata[:foreign_keys]
end
respond_to do |format|
format.json { render json: { total_relationships: total_relationships } }
end
rescue => e
Rails.logger.error("Error calculating relationship count: #{e.message}")
respond_to do |format|
format.json { render json: { total_relationships: 0, error: e.message }, status: :internal_server_error }
end
end
end
|
#tables_count ⇒ Object
22
23
24
25
26
27
28
|
# File 'app/controllers/dbviewer/home_controller.rb', line 22
def tables_count
tables = fetch_tables_with_stats(include_record_counts: false)
respond_to do |format|
format.json { render json: { total_tables: tables.size } }
end
end
|