framework-cqrs-lib 0.5.7

handle state-machine with data persist in journal and store mongo for restfull actix api
Documentation
use crate::cqrs::core::api_key::services::api_key_service::ApiKeyService;
use crate::cqrs::core::api_key::services::impl_api_key_service::ImplApiKeyService;
use crate::cqrs::infra::api_key::dao::MongoApiKeyDAO;
use crate::cqrs::infra::api_key::dbo::ApiKeyDbo;
use crate::cqrs::infra::api_key::mongo_repository::MongoApiKeyRepository;
use crate::cqrs::infra::repositories::mongo_entity_repository::MongoEntityRepository;
use std::sync::Arc;
use crate::cqrs::infra::daos::database_mongo::DatabaseMongo;

pub struct ApiKeyComponent {
    pub service: Arc<dyn ApiKeyService>,
}

impl ApiKeyComponent {
    pub async fn new(dbname: &str, aggregat_name: &str) -> Self {
        let db = DatabaseMongo::new(dbname).await;
        let api_key_dao = Arc::new(
            MongoApiKeyDAO::new(db.underlying, &format!("{aggregat_name}_api_key")).await
        );
        let api_key_repository: Arc<MongoEntityRepository<ApiKeyDbo>> = Arc::new(
            MongoApiKeyRepository {
                dao: api_key_dao.clone()
            }
        );
        let api_key_service: Arc<dyn ApiKeyService> = Arc::new(ImplApiKeyService { repo: api_key_repository.clone() });

        Self {
            service: api_key_service
        }
    }
}