use std::sync::Arc; 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 domain::ports::TokenIssuer; #[derive(Clone)] pub struct IdentityHandlers { pub register: Arc, pub login: Arc, pub get_profile: Arc, } #[derive(Clone)] pub struct CatalogHandlers { pub ingest_asset: Arc, pub get_asset: Arc, pub get_timeline: Arc, pub update_metadata: Arc, pub read_asset_file: Arc, } #[derive(Clone)] pub struct OrganizationHandlers { pub create_album: Arc, pub get_album: Arc, pub manage_album_entries: Arc, } #[derive(Clone)] pub struct StorageHandlers { pub register_volume: Arc, pub register_library_path: Arc, } #[derive(Clone)] pub struct SharingHandlers { pub share_resource: Arc, pub generate_link: Arc, pub revoke: Arc, pub access: Arc, } #[derive(Clone)] pub struct AppState { pub identity: IdentityHandlers, pub catalog: CatalogHandlers, pub organization: OrganizationHandlers, pub storage: StorageHandlers, pub sharing: SharingHandlers, pub token_issuer: Arc, }