Mountain/Binary/Initialize/
StateBuild.rs1#![allow(unused_imports)]
2
3use std::sync::Arc;
21
22#[cfg(feature = "Telemetry")]
24use opentelemetry::{KeyValue, global};
25#[cfg(feature = "Telemetry")]
26use opentelemetry::trace::Tracer;
27#[cfg(feature = "Telemetry")]
28use opentelemetry::trace::Span;
29
30use crate::{ApplicationState::ApplicationState, Environment::MountainEnvironment::MountainEnvironment, dev_log};
31
32#[derive(Debug)]
34pub struct StateBuildConfig {
35 pub strict_validation:bool,
37 pub enable_snapshots:bool,
39 pub verbose_logging:bool,
41}
42
43impl Default for StateBuildConfig {
44 fn default() -> Self {
45 Self {
46 #[cfg(feature = "Debug")]
47 strict_validation:true,
48 #[cfg(not(feature = "Debug"))]
49 strict_validation:false,
50 enable_snapshots:false,
51 #[cfg(feature = "Debug")]
52 verbose_logging:true,
53 #[cfg(not(feature = "Debug"))]
54 verbose_logging:false,
55 }
56 }
57}
58
59pub fn Build(environment:MountainEnvironment) -> Result<ApplicationState, String> {
76 BuildWithConfig(environment, StateBuildConfig::default())
77}
78
79pub fn BuildWithConfig(environment:MountainEnvironment, config:StateBuildConfig) -> Result<ApplicationState, String> {
90 #[cfg(feature = "Telemetry")]
91 let span = global::tracer("StateBuild").start("Build");
92
93 dev_log!("lifecycle", "[StateBuild] Initializing application state");
94
95 if config.verbose_logging {
96 dev_log!("lifecycle", "[StateBuild] Config: {:?}", config);
97 }
98
99 if config.strict_validation {
101 #[cfg(feature = "Telemetry")]
102 span.set_attribute(KeyValue::new("validation", "strict"));
103
104 if let Err(err) = ValidateCapabilities(&environment) {
105 dev_log!("lifecycle", "error: [StateBuild] Capability validation failed: {}", err);
106 #[cfg(feature = "Telemetry")]
107 span.set_attribute(KeyValue::new("error", err.clone()));
108 return Err(format!("Capability validation failed: {}", err));
109 }
110 dev_log!("lifecycle", "[StateBuild] All required capabilities validated");
111 }
112
113 let state = ApplicationState::default();
115
116 #[cfg(feature = "Telemetry")]
117 {
118 span.add_event("state_initialized", vec![]);
119 span.end();
120 }
121
122 dev_log!("lifecycle", "[StateBuild] Application state initialized successfully");
123 Ok(state)
124}
125
126fn ValidateCapabilities(_environment:&MountainEnvironment) -> Result<(), String> {
128 Ok(())
131}
132
133#[cfg(any(test, feature = "Test"))]
135pub fn BuildMinimal(_app_handle:tauri::AppHandle) -> Result<ApplicationState, String> {
136 dev_log!("lifecycle", "[StateBuild] Creating minimal test state");
137 let app_state = ApplicationState::default();
140 Ok(app_state)
141}
142
143#[cfg(test)]
144mod tests {
145 use super::*;
146
147 #[test]
151 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
152 fn test_state_build() {
153 unimplemented!("This test requires integration test setup with AppHandle");
156 }
157
158 #[test]
159 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
160 fn test_state_build_minimal() {
161 unimplemented!("This test requires integration test setup with AppHandle");
164 }
165}