1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use crate::config::EmailClientConfig;
use crate::service::LsEmailService;
use lightspeed_core::error::LsError;
use log::*;
use std::sync::Arc;

pub mod config;
pub mod model;
pub mod repository;
pub mod service;

#[derive(Clone)]
pub struct LsEmailClientModule {
    pub email_config: EmailClientConfig,
    pub email_service: Arc<LsEmailService>,
}

impl LsEmailClientModule {
    pub fn new(email_config: EmailClientConfig) -> Result<Self, LsError> {
        println!("Creating LsEmailClientModule");
        info!("Creating LsEmailClientModule");

        let email_service = Arc::new(LsEmailService::new(repository::email::new(email_config.clone())?));

        Ok(LsEmailClientModule { email_config, email_service })
    }
}

impl lightspeed_core::module::LsModule for LsEmailClientModule {
    async fn start(&mut self) -> Result<(), LsError> {
        info!("Starting LsEmailClientModule");
        Ok(())
    }
}