framework_cqrs_lib/cqrs/infra/api_key/
component.rs1use crate::cqrs::core::api_key::services::api_key_service::ApiKeyService;
2use crate::cqrs::core::api_key::services::impl_api_key_service::ImplApiKeyService;
3use crate::cqrs::infra::api_key::dao::MongoApiKeyDAO;
4use crate::cqrs::infra::api_key::dbo::ApiKeyDbo;
5use crate::cqrs::infra::api_key::mongo_repository::MongoApiKeyRepository;
6use crate::cqrs::infra::repositories::mongo_entity_repository::MongoEntityRepository;
7use std::sync::Arc;
8use crate::cqrs::infra::daos::database_mongo::DatabaseMongo;
9
10pub struct ApiKeyComponent {
11 pub service: Arc<dyn ApiKeyService>,
12}
13
14impl ApiKeyComponent {
15 pub async fn new(dbname: &str, aggregat_name: &str) -> Self {
16 let db = DatabaseMongo::new(dbname).await;
17 let api_key_dao = Arc::new(
18 MongoApiKeyDAO::new(&db.underlying, &format!("{aggregat_name}_api_key")).await
19 );
20 let api_key_repository: Arc<MongoEntityRepository<ApiKeyDbo>> = Arc::new(
21 MongoApiKeyRepository {
22 dao: api_key_dao.clone(),
23 database: db.underlying,
24 }
25 );
26 let api_key_service: Arc<dyn ApiKeyService> = Arc::new(ImplApiKeyService { repo: api_key_repository.clone() });
27
28 Self {
29 service: api_key_service
30 }
31 }
32}