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 #[must_use]
25 pub fn clone_for_widget(&self) -> Self {
26 Self {
27 debug_service: self.debug_service.clone_service(),
28 state_container: Arc::clone(&self.state_container),
29 }
30 }
31
32 pub fn enable_debug(&self) {
34 self.debug_service.set_enabled(true);
35 self.debug_service
36 .info("ServiceContainer", "Debug mode enabled".to_string());
37 }
38
39 pub fn disable_debug(&self) {
41 self.debug_service
42 .info("ServiceContainer", "Debug mode disabled".to_string());
43 self.debug_service.set_enabled(false);
44 }
45
46 pub fn toggle_debug(&self) {
48 if self.debug_service.is_enabled() {
49 self.disable_debug();
50 } else {
51 self.enable_debug();
52 }
53 }
54
55 #[must_use]
57 pub fn generate_debug_dump(&self) -> String {
58 let mut dump = String::new();
59
60 dump.push_str(&self.state_container.debug_dump());
62 dump.push('\n');
63
64 dump.push_str(&self.debug_service.generate_dump());
66 dump.push('\n');
67
68 dump.push_str(&self.debug_service.generate_summary());
70
71 dump
72 }
73}