use std::sync::Arc; use domain::ports::{ AuthService, DiaryExporter, DiaryRepository, DocumentParser, EventPublisher, ImageStorage, ImportProfileRepository, ImportSessionRepository, MetadataClient, MovieProfileRepository, MovieRepository, PasswordHasher, PosterFetcherClient, PersonCommand, PersonQuery, SearchCommand, SearchPort, ReviewRepository, StatsRepository, UserRepository, }; use crate::config::AppConfig; #[derive(Clone)] pub struct AppContext { pub movie_repository: Arc, pub review_repository: Arc, pub diary_repository: Arc, pub diary_exporter: Arc, pub document_parser: Arc, pub stats_repository: Arc, pub metadata_client: Arc, pub poster_fetcher: Arc, pub image_storage: Arc, pub event_publisher: Arc, pub auth_service: Arc, pub password_hasher: Arc, pub user_repository: Arc, pub import_session_repository: Arc, pub import_profile_repository: Arc, pub movie_profile_repository: Arc, pub person_command: Arc, pub person_query: Arc, pub search_port: Arc, pub search_command: Arc, pub config: AppConfig, }