32 lines
1.1 KiB
Rust
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,
|
|
}
|
|
}
|