DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/Binary/Initialize/
StateBuild.rs1use std::sync::Arc;
19
20#[cfg(feature = "Telemetry")]
22use opentelemetry::{KeyValue, global};
23#[cfg(feature = "Telemetry")]
24use opentelemetry::trace::Tracer;
25#[cfg(feature = "Telemetry")]
26use opentelemetry::trace::Span;
27
28use crate::{
29 ApplicationState::State::ApplicationState::ApplicationState,
30 Environment::MountainEnvironment::MountainEnvironment,
31 dev_log,
32};
33
34#[derive(Debug)]
36pub struct StateBuildConfig {
37 pub strict_validation:bool,
39
40 pub enable_snapshots:bool,
42
43 pub verbose_logging:bool,
45}
46
47impl Default for StateBuildConfig {
48 fn default() -> Self {
49 Self {
50 #[cfg(feature = "Debug")]
51 strict_validation:true,
52
53 #[cfg(not(feature = "Debug"))]
54 strict_validation:false,
55
56 enable_snapshots:false,
57
58 #[cfg(feature = "Debug")]
59 verbose_logging:true,
60
61 #[cfg(not(feature = "Debug"))]
62 verbose_logging:false,
63 }
64 }
65}
66
67pub fn Build(environment:MountainEnvironment) -> Result<ApplicationState, String> {
84 BuildWithConfig(environment, StateBuildConfig::default())
85}
86
87pub fn BuildWithConfig(environment:MountainEnvironment, config:StateBuildConfig) -> Result<ApplicationState, String> {
98 #[cfg(feature = "Telemetry")]
99 let span = global::tracer("StateBuild").start("Build");
100
101 dev_log!("lifecycle", "[StateBuild] Initializing application state");
102
103 if config.verbose_logging {
104 dev_log!("lifecycle", "[StateBuild] Config: {:?}", config);
105 }
106
107 if config.strict_validation {
109 #[cfg(feature = "Telemetry")]
110 span.set_attribute(KeyValue::new("validation", "strict"));
111
112 if let Err(err) = ValidateCapabilities(&environment) {
113 dev_log!("lifecycle", "error: [StateBuild] Capability validation failed: {}", err);
114
115 #[cfg(feature = "Telemetry")]
116 span.set_attribute(KeyValue::new("error", err.clone()));
117
118 return Err(format!("Capability validation failed: {}", err));
119 }
120
121 dev_log!("lifecycle", "[StateBuild] All required capabilities validated");
122 }
123
124 let state = ApplicationState::default();
126
127 #[cfg(feature = "Telemetry")]
128 {
129 span.add_event("state_initialized", vec![]);
130
131 span.end();
132 }
133
134 dev_log!("lifecycle", "[StateBuild] Application state initialized successfully");
135
136 Ok(state)
137}
138
139fn ValidateCapabilities(_environment:&MountainEnvironment) -> Result<(), String> {
141 Ok(())
144}
145
146#[cfg(any(test, feature = "Test"))]
148pub fn BuildMinimal(_app_handle:tauri::AppHandle) -> Result<ApplicationState, String> {
149 dev_log!("lifecycle", "[StateBuild] Creating minimal test state");
150
151 let app_state = ApplicationState::default();
154
155 Ok(app_state)
156}
157
158#[cfg(test)]
159mod tests {
160
161 use super::*;
162
163 #[test]
167 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
168 fn test_state_build() {
169 unimplemented!("This test requires integration test setup with AppHandle");
172 }
173
174 #[test]
175 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
176 fn test_state_build_minimal() {
177 unimplemented!("This test requires integration test setup with AppHandle");
180 }
181}