sql_cli/ui/debug/
enhanced_debug_integration.rs1use crate::ui::enhanced_tui::EnhancedTuiApp;
4
5impl EnhancedTuiApp {
6 pub fn generate_registry_debug_info(&mut self) -> String {
9 self.register_debug_providers();
11
12 let mut debug_report = self.debug_registry.generate_debug_report();
14
15 if let Some(buffer) = self.state_container().current_buffer() {
20 let query = buffer.input_manager.get_text();
21 if !query.is_empty() {
22 let parser_info = self.debug_generate_parser_info(&query);
23 debug_report.insert_str(0, &parser_info);
24 }
25 }
26
27 if !self.navigation_timings.is_empty() {
29 debug_report.push_str("\n========== NAVIGATION TIMING ==========\n");
30 debug_report.push_str(&format!(
31 "Last {} navigation timings:\n",
32 self.navigation_timings.len()
33 ));
34 for timing in &self.navigation_timings {
35 debug_report.push_str(&format!(" {}\n", timing));
36 }
37 if self.navigation_timings.len() > 0 {
39 let total_ms: f64 = self
40 .navigation_timings
41 .iter()
42 .filter_map(|s| self.debug_extract_timing(s))
43 .sum();
44 let avg_ms = total_ms / self.navigation_timings.len() as f64;
45 debug_report.push_str(&format!("Average navigation time: {:.3}ms\n", avg_ms));
46 }
47 }
48
49 if !self.render_timings.is_empty() {
51 debug_report.push_str("\n========== RENDER TIMING ==========\n");
52 debug_report.push_str(&format!(
53 "Last {} render timings:\n",
54 self.render_timings.len()
55 ));
56 for timing in &self.render_timings {
57 debug_report.push_str(&format!(" {}\n", timing));
58 }
59 if self.render_timings.len() > 0 {
61 let total_ms: f64 = self
62 .render_timings
63 .iter()
64 .filter_map(|s| self.debug_extract_timing(s))
65 .sum();
66 let avg_ms = total_ms / self.render_timings.len() as f64;
67 debug_report.push_str(&format!("Average render time: {:.3}ms\n", avg_ms));
68 }
69 }
70
71 debug_report.push_str(&self.debug_generate_trace_logs());
73
74 debug_report.push_str(&self.debug_generate_state_logs());
76
77 debug_report
78 }
79
80 pub fn toggle_debug_mode_with_registry(&mut self, use_registry: bool) {
83 if use_registry {
84 let should_exit_debug = {
86 if let Some(buffer) = self.state_container().current_buffer() {
87 buffer.mode == crate::buffer::AppMode::Debug
88 } else {
89 false
90 }
91 };
92
93 if should_exit_debug {
94 if let Some(buffer) = self.state_container_mut().current_buffer_mut() {
95 buffer.mode = crate::buffer::AppMode::Command;
96 }
97 } else {
98 if let Some(buffer) = self.state_container_mut().current_buffer_mut() {
100 buffer.mode = crate::buffer::AppMode::Debug;
101 }
102
103 let debug_info = self.generate_registry_debug_info();
105
106 self.debug_widget.set_content(debug_info);
108 }
109 } else {
110 self.toggle_debug_mode();
112 }
113 }
114
115 pub fn should_use_registry_debug(&self) -> bool {
118 false
121 }
122}