Class: Dbviewer::Api::TablesController
- Inherits:
-
BaseController
- Object
- ActionController::Base
- Dbviewer::ApplicationController
- BaseController
- Dbviewer::Api::TablesController
- Defined in:
- app/controllers/dbviewer/api/tables_controller.rb
Instance Method Summary collapse
- #index ⇒ Object
- #mini_erd ⇒ Object
- #records ⇒ Object
- #relationship_counts ⇒ Object
- #relationships_count ⇒ Object
- #show ⇒ Object
Methods inherited from BaseController
#render_error, #render_success
Methods included from DatabaseOperations
#access_control, #database_manager, #filter_accessible_columns, #filter_accessible_tables, #table_query_operations
Methods included from DatabaseOperations::TableOperations
#fetch_table_columns, #fetch_table_metadata, #fetch_table_record_count, #fetch_table_records, #fetch_tables
Methods included from DatabaseOperations::RelationshipManagement
#fetch_mini_erd_for_table, #fetch_table_relationships
Methods included from DatabaseOperations::QueryOperations
#default_query, #execute_query, #prepare_query
Methods included from DatabaseOperations::DatatableOperations
#fetch_datatable_data, #fetch_table_stats
Methods included from DatabaseOperations::DatabaseInformation
#fetch_database_name, #get_adapter_name, #get_database_name
Methods included from DatabaseOperations::DataExport
Methods included from DatabaseOperations::ConnectionManagement
#available_connections, #current_connection_key, #switch_connection
Instance Method Details
#index ⇒ Object
4 5 6 |
# File 'app/controllers/dbviewer/api/tables_controller.rb', line 4 def index render_success(total_tables: fetch_tables.length) end |
#mini_erd ⇒ Object
60 61 62 63 64 65 |
# File 'app/controllers/dbviewer/api/tables_controller.rb', line 60 def mini_erd table_name = params[:id] erd_data = fetch_mini_erd_for_table(table_name) render_success(erd_data) end |
#records ⇒ Object
21 22 23 24 |
# File 'app/controllers/dbviewer/api/tables_controller.rb', line 21 def records all_tables_stats = fetch_tables_stats render_success(all_tables_stats) end |
#relationship_counts ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'app/controllers/dbviewer/api/tables_controller.rb', line 31 def relationship_counts table_name = params[:id] record_id = params[:record_id] # Check if table is accessible unless access_control.table_accessible?(table_name) render_error("Access denied: Table '#{table_name}' is not accessible", :forbidden) return end reverse_foreign_keys = (table_name).dig(:reverse_foreign_keys) || [] relationship_counts = reverse_foreign_keys.map do |rel| # Only include relationships to accessible tables next unless access_control.table_accessible?(rel[:from_table]) { table: rel[:from_table], foreign_key: rel[:column], count: database_manager.get_model_for(rel[:from_table]).where(rel[:column] => record_id).count } end.compact render_success({ table_name: table_name, record_id: record_id, relationships: relationship_counts }) end |
#relationships_count ⇒ Object
26 27 28 29 |
# File 'app/controllers/dbviewer/api/tables_controller.rb', line 26 def relationships_count total_relationships = calculate_total_relationships render_success(total_relationships: total_relationships) end |
#show ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'app/controllers/dbviewer/api/tables_controller.rb', line 8 def show table_name = params[:id] # Check if table is accessible unless access_control.table_accessible?(table_name) render_error(access_control.(table_name), :forbidden) return end table_stats = fetch_table_stats(table_name) render_success(**table_stats) end |