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::{
31 ApplicationState::State::ApplicationState::ApplicationState,
32 Environment::MountainEnvironment::MountainEnvironment,
33 dev_log,
34};
35
36#[derive(Debug)]
38pub struct StateBuildConfig {
39 pub strict_validation:bool,
41
42 pub enable_snapshots:bool,
44
45 pub verbose_logging:bool,
47}
48
49impl Default for StateBuildConfig {
50 fn default() -> Self {
51 Self {
52 #[cfg(feature = "Debug")]
53 strict_validation:true,
54
55 #[cfg(not(feature = "Debug"))]
56 strict_validation:false,
57
58 enable_snapshots:false,
59
60 #[cfg(feature = "Debug")]
61 verbose_logging:true,
62
63 #[cfg(not(feature = "Debug"))]
64 verbose_logging:false,
65 }
66 }
67}
68
69pub fn Build(environment:MountainEnvironment) -> Result<ApplicationState, String> {
86 BuildWithConfig(environment, StateBuildConfig::default())
87}
88
89pub fn BuildWithConfig(environment:MountainEnvironment, config:StateBuildConfig) -> Result<ApplicationState, String> {
100 #[cfg(feature = "Telemetry")]
101 let span = global::tracer("StateBuild").start("Build");
102
103 dev_log!("lifecycle", "[StateBuild] Initializing application state");
104
105 if config.verbose_logging {
106 dev_log!("lifecycle", "[StateBuild] Config: {:?}", config);
107 }
108
109 if config.strict_validation {
111 #[cfg(feature = "Telemetry")]
112 span.set_attribute(KeyValue::new("validation", "strict"));
113
114 if let Err(err) = ValidateCapabilities(&environment) {
115 dev_log!("lifecycle", "error: [StateBuild] Capability validation failed: {}", err);
116
117 #[cfg(feature = "Telemetry")]
118 span.set_attribute(KeyValue::new("error", err.clone()));
119
120 return Err(format!("Capability validation failed: {}", err));
121 }
122
123 dev_log!("lifecycle", "[StateBuild] All required capabilities validated");
124 }
125
126 let state = ApplicationState::default();
128
129 #[cfg(feature = "Telemetry")]
130 {
131 span.add_event("state_initialized", vec![]);
132
133 span.end();
134 }
135
136 dev_log!("lifecycle", "[StateBuild] Application state initialized successfully");
137
138 Ok(state)
139}
140
141fn ValidateCapabilities(_environment:&MountainEnvironment) -> Result<(), String> {
143 Ok(())
146}
147
148#[cfg(any(test, feature = "Test"))]
150pub fn BuildMinimal(_app_handle:tauri::AppHandle) -> Result<ApplicationState, String> {
151 dev_log!("lifecycle", "[StateBuild] Creating minimal test state");
152
153 let app_state = ApplicationState::default();
156
157 Ok(app_state)
158}
159
160#[cfg(test)]
161mod tests {
162
163 use super::*;
164
165 #[test]
169 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
170 fn test_state_build() {
171 unimplemented!("This test requires integration test setup with AppHandle");
174 }
175
176 #[test]
177 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
178 fn test_state_build_minimal() {
179 unimplemented!("This test requires integration test setup with AppHandle");
182 }
183}