Files
k-photos/crates/presentation/src/state.rs
Gabriel Kaszewski a6b86c23d8 feat: wire remaining handlers — tag, quota, register asset, sidecar, processing
14 new endpoints: POST tags, GET quota, POST register, 6 sidecar, 7 processing.
DTOs, AppState groups, LogSidecarWriter, full bootstrap wiring.
2026-05-31 11:04:22 +02:00

102 lines
3.2 KiB
Rust

use std::sync::Arc;
use application::{
catalog::{
GetAssetHandler, GetTimelineHandler, ReadAssetFileHandler, RegisterAssetHandler,
UpdateMetadataHandler,
},
identity::{GetProfileHandler, LoginUserHandler, RegisterUserHandler},
organization::{
CreateAlbumHandler, GetAlbumHandler, ManageAlbumEntriesHandler, TagAssetHandler,
},
processing::{
CompleteJobHandler, ConfigurePipelineHandler, EnqueueJobHandler, FailJobHandler,
ManagePluginHandler, ReportBatchProgressHandler, StartJobHandler,
},
sharing::{
AccessSharedResourceHandler, GenerateShareLinkHandler, RevokeShareHandler,
ShareResourceHandler,
},
sidecar::{
DetectExternalChangesHandler, ExportSidecarHandler, FullExportHandler, FullImportHandler,
ImportSidecarHandler, ResolveConflictHandler,
},
storage::{
CheckQuotaHandler, IngestAssetHandler, RegisterLibraryPathHandler, RegisterVolumeHandler,
},
};
use domain::ports::TokenIssuer;
#[derive(Clone)]
pub struct IdentityHandlers {
pub register: Arc<RegisterUserHandler>,
pub login: Arc<LoginUserHandler>,
pub get_profile: Arc<GetProfileHandler>,
}
#[derive(Clone)]
pub struct CatalogHandlers {
pub ingest_asset: Arc<IngestAssetHandler>,
pub get_asset: Arc<GetAssetHandler>,
pub get_timeline: Arc<GetTimelineHandler>,
pub update_metadata: Arc<UpdateMetadataHandler>,
pub read_asset_file: Arc<ReadAssetFileHandler>,
pub register_asset: Arc<RegisterAssetHandler>,
}
#[derive(Clone)]
pub struct OrganizationHandlers {
pub create_album: Arc<CreateAlbumHandler>,
pub get_album: Arc<GetAlbumHandler>,
pub manage_album_entries: Arc<ManageAlbumEntriesHandler>,
pub tag_asset: Arc<TagAssetHandler>,
}
#[derive(Clone)]
pub struct StorageHandlers {
pub register_volume: Arc<RegisterVolumeHandler>,
pub register_library_path: Arc<RegisterLibraryPathHandler>,
pub check_quota: Arc<CheckQuotaHandler>,
}
#[derive(Clone)]
pub struct SharingHandlers {
pub share_resource: Arc<ShareResourceHandler>,
pub generate_link: Arc<GenerateShareLinkHandler>,
pub revoke: Arc<RevokeShareHandler>,
pub access: Arc<AccessSharedResourceHandler>,
}
#[derive(Clone)]
pub struct SidecarHandlers {
pub export: Arc<ExportSidecarHandler>,
pub detect_changes: Arc<DetectExternalChangesHandler>,
pub import: Arc<ImportSidecarHandler>,
pub resolve: Arc<ResolveConflictHandler>,
pub full_export: Arc<FullExportHandler>,
pub full_import: Arc<FullImportHandler>,
}
#[derive(Clone)]
pub struct ProcessingHandlers {
pub enqueue_job: Arc<EnqueueJobHandler>,
pub start_job: Arc<StartJobHandler>,
pub complete_job: Arc<CompleteJobHandler>,
pub fail_job: Arc<FailJobHandler>,
pub batch_progress: Arc<ReportBatchProgressHandler>,
pub manage_plugin: Arc<ManagePluginHandler>,
pub configure_pipeline: Arc<ConfigurePipelineHandler>,
}
#[derive(Clone)]
pub struct AppState {
pub identity: IdentityHandlers,
pub catalog: CatalogHandlers,
pub organization: OrganizationHandlers,
pub storage: StorageHandlers,
pub sharing: SharingHandlers,
pub sidecar: SidecarHandlers,
pub processing: ProcessingHandlers,
pub token_issuer: Arc<dyn TokenIssuer>,
}