diff --git a/src/main.rs b/src/main.rs index eb826ff..d9479b8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ async fn main() -> Result<(), Box> { } let app = match catapult::app::load_app() { - Ok(app) => app, + Ok(app) => std::sync::Arc::new(app), Err(err) => { eprintln!("Error: {err:?}"); std::process::exit(-1); @@ -16,9 +16,12 @@ async fn main() -> Result<(), Box> { println!("App: {app:?}"); - let auth = catapult::service::auth::Auth { app: app.clone() }; + // let auth = catapult::service::auth::Auth { app: app.clone() }; + let auth = catapult::service::auth::Auth { + app: std::sync::Arc::clone(&app), + }; let token = match auth.get_token().await { - Ok(token) => token, + Ok(token) => std::sync::Arc::new(token), Err(err) => { eprintln!("Error getting token"); eprintln!("Error: {err:?}"); @@ -27,8 +30,8 @@ async fn main() -> Result<(), Box> { }; let mut svc = catapult::service::core::Service { - app: app.clone(), - token, + app: std::sync::Arc::clone(&app), + token: std::sync::Arc::clone(&token), }; loop { @@ -36,7 +39,8 @@ async fn main() -> Result<(), Box> { match auth.get_refresh_token(&svc.token).await { Ok(refresh) => { println!("Refresh token: {refresh:?}"); - svc.token = refresh; + let refreshed = std::sync::Arc::new(refresh); + svc.token = refreshed; } Err(err) => { eprintln!("Error: {err:?}"); diff --git a/src/service/auth.rs b/src/service/auth.rs index 52ec5ec..510046e 100644 --- a/src/service/auth.rs +++ b/src/service/auth.rs @@ -1,5 +1,5 @@ pub struct Auth { - pub app: crate::app::App, + pub app: std::sync::Arc, } impl Auth { diff --git a/src/service/contact.rs b/src/service/contact.rs index b452b2e..9220615 100644 --- a/src/service/contact.rs +++ b/src/service/contact.rs @@ -1,6 +1,6 @@ pub struct Contact { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Contact { diff --git a/src/service/core.rs b/src/service/core.rs index 195bf88..659e4d4 100644 --- a/src/service/core.rs +++ b/src/service/core.rs @@ -1,6 +1,6 @@ pub struct Service { - pub app: crate::app::App, - pub token: textsender_models::token::Login, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Service { @@ -10,8 +10,8 @@ impl Service { use textsender_models::message::scheduling::ScheduledMessage; let queue = super::queue::Queue { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let queue_item: Option = match queue.get_queue().await { Ok(item) => Some(item), @@ -37,8 +37,8 @@ impl Service { println!("Can schedule"); let events_req = super::event::Event { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let scheduled_message_id = queue_item.id; @@ -51,20 +51,20 @@ impl Service { }; let contacts = super::contact::Contact { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let messages = super::message::Message { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let sch_msg = super::scheduler::ScheduledMessage { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let mer_req = super::mer::MessageEventResponse { - app: self.app.clone(), - token: self.token.clone(), + app: std::sync::Arc::clone(&self.app), + token: std::sync::Arc::clone(&self.token), }; let events = events.unwrap_or_default(); diff --git a/src/service/event.rs b/src/service/event.rs index c8f8456..29fb7ab 100644 --- a/src/service/event.rs +++ b/src/service/event.rs @@ -1,6 +1,6 @@ pub struct Event { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Event { diff --git a/src/service/mer.rs b/src/service/mer.rs index 1da1e9d..8a6ae5a 100644 --- a/src/service/mer.rs +++ b/src/service/mer.rs @@ -1,6 +1,6 @@ pub struct MessageEventResponse { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl MessageEventResponse { diff --git a/src/service/message.rs b/src/service/message.rs index e10d4ae..4374f10 100644 --- a/src/service/message.rs +++ b/src/service/message.rs @@ -1,6 +1,6 @@ pub struct Message { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Message { diff --git a/src/service/queue.rs b/src/service/queue.rs index b5c50d2..3b4167d 100644 --- a/src/service/queue.rs +++ b/src/service/queue.rs @@ -1,6 +1,6 @@ pub struct Queue { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl Queue { diff --git a/src/service/scheduler.rs b/src/service/scheduler.rs index f7ebef9..72532a1 100644 --- a/src/service/scheduler.rs +++ b/src/service/scheduler.rs @@ -1,6 +1,6 @@ pub struct ScheduledMessage { - pub app: crate::app::App, - pub token: textsender_models::token::LoginResult, + pub app: std::sync::Arc, + pub token: std::sync::Arc, } impl ScheduledMessage {