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 pub enable_snapshots:bool,
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 #[cfg(not(feature = "Debug"))]
53 strict_validation:false,
54 enable_snapshots:false,
55 #[cfg(feature = "Debug")]
56 verbose_logging:true,
57 #[cfg(not(feature = "Debug"))]
58 verbose_logging:false,
59 }
60 }
61}
62
63pub fn Build(environment:MountainEnvironment) -> Result<ApplicationState, String> {
80 BuildWithConfig(environment, StateBuildConfig::default())
81}
82
83pub fn BuildWithConfig(environment:MountainEnvironment, config:StateBuildConfig) -> Result<ApplicationState, String> {
94 #[cfg(feature = "Telemetry")]
95 let span = global::tracer("StateBuild").start("Build");
96
97 dev_log!("lifecycle", "[StateBuild] Initializing application state");
98
99 if config.verbose_logging {
100 dev_log!("lifecycle", "[StateBuild] Config: {:?}", config);
101 }
102
103 if config.strict_validation {
105 #[cfg(feature = "Telemetry")]
106 span.set_attribute(KeyValue::new("validation", "strict"));
107
108 if let Err(err) = ValidateCapabilities(&environment) {
109 dev_log!("lifecycle", "error: [StateBuild] Capability validation failed: {}", err);
110 #[cfg(feature = "Telemetry")]
111 span.set_attribute(KeyValue::new("error", err.clone()));
112 return Err(format!("Capability validation failed: {}", err));
113 }
114 dev_log!("lifecycle", "[StateBuild] All required capabilities validated");
115 }
116
117 let state = ApplicationState::default();
119
120 #[cfg(feature = "Telemetry")]
121 {
122 span.add_event("state_initialized", vec![]);
123 span.end();
124 }
125
126 dev_log!("lifecycle", "[StateBuild] Application state initialized successfully");
127 Ok(state)
128}
129
130fn ValidateCapabilities(_environment:&MountainEnvironment) -> Result<(), String> {
132 Ok(())
135}
136
137#[cfg(any(test, feature = "Test"))]
139pub fn BuildMinimal(_app_handle:tauri::AppHandle) -> Result<ApplicationState, String> {
140 dev_log!("lifecycle", "[StateBuild] Creating minimal test state");
141 let app_state = ApplicationState::default();
144 Ok(app_state)
145}
146
147#[cfg(test)]
148mod tests {
149 use super::*;
150
151 #[test]
155 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
156 fn test_state_build() {
157 unimplemented!("This test requires integration test setup with AppHandle");
160 }
161
162 #[test]
163 #[ignore = "Requires tauri::AppHandle - use integration tests instead"]
164 fn test_state_build_minimal() {
165 unimplemented!("This test requires integration test setup with AppHandle");
168 }
169}