omni_orchestrator/initialization/
setup_database.rs1use anyhow::Result;
2use colored::Colorize;
3use std::{env, sync::Arc};
4use crate::db_manager::DatabaseManager;
5use crate::logging;
6
7pub async fn setup_database() -> Result<Arc<DatabaseManager>> {
16 let database_url = env::var("DATABASE_URL").unwrap_or_else(|_| {
18 dotenv::dotenv().ok();
19 env::var("DEFAULT_DATABASE_URL")
20 .unwrap_or_else(|_| "mysql://root:root@localhost:4001".to_string())
21 });
22
23 log::info!("{}", format!("Database URL: {}", database_url).blue());
24 let db_manager = Arc::new(DatabaseManager::new(&database_url).await?);
25
26 logging::print_banner("Platform Database Registration", |s| s.bright_blue());
28
29 let platforms = db_manager.get_all_platforms().await?;
31 log::info!("{}", format!("Found {} platforms", platforms.len()).blue());
32
33 for platform in &platforms {
35 log::info!(
36 "{}",
37 format!(
38 "Pre-initializing connection for platform: {}",
39 platform.name
40 )
41 .blue()
42 );
43 db_manager.get_platform_pool(&platform.name, platform.id.unwrap_or(0)).await?;
44 }
45
46 Ok(db_manager)
47}