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
35
36
37
use crate::service::hash_service::HashService;
use crate::service::validation_code_service::ValidationCodeService;
use lightspeed_core::error::LightSpeedError;
use lightspeed_core::CoreModule;
use log::*;
use std::sync::Arc;

pub mod dto;
pub mod service;

#[derive(Clone)]
pub struct HashModule {
    pub hash_service: Arc<HashService>,
    pub validation_code_service: Arc<ValidationCodeService>,
}

impl HashModule {
    pub fn new(core_module: &CoreModule) -> Result<Self, LightSpeedError> {
        println!("Creating HashModule");
        info!("Creating HashModule");

        let hash_service = Arc::new(HashService::new());

        let validation_code_service =
            Arc::new(ValidationCodeService::new(hash_service.clone(), core_module.jwt.clone()));

        Ok(HashModule { hash_service, validation_code_service })
    }
}

#[async_trait::async_trait]
impl lightspeed_core::module::Module for HashModule {
    async fn start(&mut self) -> Result<(), LightSpeedError> {
        info!("Starting HashModule");
        Ok(())
    }
}