Files
k-photos/crates/bootstrap/src/services/sharing.rs

32 lines
1.1 KiB
Rust

use std::sync::Arc;
use adapters_postgres::{
PgPool, PostgresShareRepository, PostgresVisibilityFilterRepository,
};
use application::sharing::{
AccessSharedResourceHandler, GenerateShareLinkHandler, RevokeShareHandler,
ShareResourceHandler,
};
use domain::ports::EventPublisher;
use presentation::state::SharingHandlers;
pub fn build(pool: &PgPool, event_publisher: Arc<dyn EventPublisher>) -> SharingHandlers {
let share_repo = Arc::new(PostgresShareRepository::new(pool.clone()));
let _visibility_filter_repo = Arc::new(PostgresVisibilityFilterRepository::new(pool.clone()));
let share_resource = Arc::new(ShareResourceHandler::new(
share_repo.clone(),
event_publisher.clone(),
));
let generate_link = Arc::new(GenerateShareLinkHandler::new(share_repo.clone()));
let revoke = Arc::new(RevokeShareHandler::new(share_repo.clone(), event_publisher));
let access = Arc::new(AccessSharedResourceHandler::new(share_repo));
SharingHandlers {
share_resource,
generate_link,
revoke,
access,
}
}