feat: add sharing endpoints — share, link, revoke, public access
This commit is contained in:
@@ -12,8 +12,8 @@ use adapters_auth::{BcryptPasswordHasher, JwtTokenIssuer};
|
||||
use adapters_postgres::{
|
||||
PostgresAlbumRepository, PostgresAssetMetadataRepository, PostgresAssetRepository,
|
||||
PostgresIngestSessionRepository, PostgresLibraryPathRepository, PostgresQuotaRepository,
|
||||
PostgresStorageVolumeRepository, PostgresUsageLedgerRepository, PostgresUserRepository,
|
||||
connect, run_migrations,
|
||||
PostgresShareRepository, PostgresStorageVolumeRepository, PostgresUsageLedgerRepository,
|
||||
PostgresUserRepository, PostgresVisibilityFilterRepository, connect, run_migrations,
|
||||
};
|
||||
|
||||
use adapters_storage::LocalFileStorage;
|
||||
@@ -22,11 +22,18 @@ use application::{
|
||||
catalog::{GetAssetHandler, GetTimelineHandler, ReadAssetFileHandler, UpdateMetadataHandler},
|
||||
identity::{GetProfileHandler, LoginUserHandler, RegisterUserHandler},
|
||||
organization::{CreateAlbumHandler, GetAlbumHandler, ManageAlbumEntriesHandler},
|
||||
sharing::{
|
||||
AccessSharedResourceHandler, GenerateShareLinkHandler, RevokeShareHandler,
|
||||
ShareResourceHandler,
|
||||
},
|
||||
storage::{IngestAssetHandler, RegisterLibraryPathHandler, RegisterVolumeHandler},
|
||||
};
|
||||
use presentation::{
|
||||
routes::app_router,
|
||||
state::{AppState, CatalogHandlers, IdentityHandlers, OrganizationHandlers, StorageHandlers},
|
||||
state::{
|
||||
AppState, CatalogHandlers, IdentityHandlers, OrganizationHandlers, SharingHandlers,
|
||||
StorageHandlers,
|
||||
},
|
||||
};
|
||||
|
||||
use crate::config::Config;
|
||||
@@ -90,10 +97,22 @@ pub async fn build_app(config: &Config) -> Result<Router> {
|
||||
let update_metadata_handler = Arc::new(UpdateMetadataHandler::new(
|
||||
asset_repo.clone(),
|
||||
metadata_repo,
|
||||
event_publisher,
|
||||
event_publisher.clone(),
|
||||
));
|
||||
let read_asset_file_handler = Arc::new(ReadAssetFileHandler::new(asset_repo, file_storage));
|
||||
|
||||
// Sharing repos & handlers
|
||||
let share_repo = Arc::new(PostgresShareRepository::new(pool.clone()));
|
||||
let _visibility_filter_repo = Arc::new(PostgresVisibilityFilterRepository::new(pool));
|
||||
|
||||
let share_resource_handler = Arc::new(ShareResourceHandler::new(
|
||||
share_repo.clone(),
|
||||
event_publisher.clone(),
|
||||
));
|
||||
let generate_link_handler = Arc::new(GenerateShareLinkHandler::new(share_repo.clone()));
|
||||
let revoke_handler = Arc::new(RevokeShareHandler::new(share_repo.clone(), event_publisher));
|
||||
let access_handler = Arc::new(AccessSharedResourceHandler::new(share_repo));
|
||||
|
||||
// Storage handlers
|
||||
let register_volume_handler = Arc::new(RegisterVolumeHandler::new(volume_repo.clone()));
|
||||
let register_library_path_handler =
|
||||
@@ -124,11 +143,19 @@ pub async fn build_app(config: &Config) -> Result<Router> {
|
||||
register_library_path: register_library_path_handler,
|
||||
};
|
||||
|
||||
let sharing = SharingHandlers {
|
||||
share_resource: share_resource_handler,
|
||||
generate_link: generate_link_handler,
|
||||
revoke: revoke_handler,
|
||||
access: access_handler,
|
||||
};
|
||||
|
||||
let state = AppState {
|
||||
identity,
|
||||
catalog,
|
||||
organization,
|
||||
storage: storage_handlers,
|
||||
sharing,
|
||||
token_issuer: issuer,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user