sql_cli/
service_container.rs1use crate::app_state_container::AppStateContainer;
2use crate::debug_service::DebugService;
3use std::sync::Arc;
4
5pub struct ServiceContainer {
8 pub debug_service: DebugService,
10
11 pub state_container: Arc<AppStateContainer>,
13}
14
15impl ServiceContainer {
16 pub fn new(state_container: Arc<AppStateContainer>) -> Self {
17 Self {
18 debug_service: DebugService::new(1000), state_container,
20 }
21 }
22
23 pub fn clone_for_widget(&self) -> Self {
25 Self {
26 debug_service: self.debug_service.clone_service(),
27 state_container: Arc::clone(&self.state_container),
28 }
29 }
30
31 pub fn enable_debug(&self) {
33 self.debug_service.set_enabled(true);
34 self.debug_service
35 .info("ServiceContainer", "Debug mode enabled".to_string());
36 }
37
38 pub fn disable_debug(&self) {
40 self.debug_service
41 .info("ServiceContainer", "Debug mode disabled".to_string());
42 self.debug_service.set_enabled(false);
43 }
44
45 pub fn toggle_debug(&self) {
47 if self.debug_service.is_enabled() {
48 self.disable_debug();
49 } else {
50 self.enable_debug();
51 }
52 }
53
54 pub fn generate_debug_dump(&self) -> String {
56 let mut dump = String::new();
57
58 dump.push_str(&self.state_container.debug_dump());
60 dump.push_str("\n");
61
62 dump.push_str(&self.debug_service.generate_dump());
64 dump.push_str("\n");
65
66 dump.push_str(&self.debug_service.generate_summary());
68
69 dump
70 }
71}