From f26241797121730ef72180fb6f83ffa2cbafc1f5 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Wed, 3 Jun 2026 01:33:08 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20rename=20ImageStorage=20=E2=86=92?= =?UTF-8?q?=20ObjectStorage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapters/image-converter/src/handler.rs | 6 +++--- crates/adapters/image-converter/src/lib.rs | 6 +++--- .../image-converter/src/tests/handler.rs | 16 +++++++-------- crates/adapters/image-storage/src/lib.rs | 20 +++++++++---------- .../adapters/image-storage/src/tests/lib.rs | 6 +++--- crates/adapters/poster-sync/src/lib.rs | 10 +++++----- crates/adapters/tmdb-enrichment/src/lib.rs | 12 +++++------ crates/application/src/context.rs | 4 ++-- crates/application/src/movies/sync_poster.rs | 2 +- crates/application/src/test_helpers.rs | 10 +++++----- .../application/src/users/update_profile.rs | 8 ++++---- crates/application/src/wrapup/delete.rs | 2 +- .../src/wrapup/handle_requested.rs | 2 +- crates/application/src/wrapup/storage.rs | 6 +++--- crates/domain/src/ports.rs | 2 +- crates/domain/src/testing.rs | 8 ++++---- crates/presentation/src/factory.rs | 4 ++-- crates/presentation/src/handlers/images.rs | 2 +- crates/presentation/src/handlers/wrapup.rs | 2 +- crates/presentation/src/main.rs | 4 ++-- crates/presentation/src/tests/extractors.rs | 6 +++--- crates/presentation/tests/api_test.rs | 8 ++++---- crates/worker/src/main.rs | 12 +++++------ 23 files changed, 79 insertions(+), 79 deletions(-) diff --git a/crates/adapters/image-converter/src/handler.rs b/crates/adapters/image-converter/src/handler.rs index 7ca3790..cba9958 100644 --- a/crates/adapters/image-converter/src/handler.rs +++ b/crates/adapters/image-converter/src/handler.rs @@ -4,20 +4,20 @@ use async_trait::async_trait; use domain::{ errors::DomainError, events::DomainEvent, - ports::{EventHandler, ImageRefCommand, ImageStorage}, + ports::{EventHandler, ImageRefCommand, ObjectStorage}, }; use crate::Format; pub struct ImageConversionHandler { - storage: Arc, + storage: Arc, image_ref: Arc, format: Format, } impl ImageConversionHandler { pub fn new( - storage: Arc, + storage: Arc, image_ref: Arc, format: Format, ) -> Self { diff --git a/crates/adapters/image-converter/src/lib.rs b/crates/adapters/image-converter/src/lib.rs index 3a2b7b0..d34822e 100644 --- a/crates/adapters/image-converter/src/lib.rs +++ b/crates/adapters/image-converter/src/lib.rs @@ -7,14 +7,14 @@ pub use config::{ConversionConfig, Format}; pub use handler::ImageConversionHandler; use domain::ports::{ - EventHandler, EventPublisher, ImageRefCommand, ImageRefQuery, ImageStorage, PeriodicJob, + EventHandler, EventPublisher, ImageRefCommand, ImageRefQuery, ObjectStorage, PeriodicJob, }; use std::sync::Arc; type ConversionPair = (Arc, Arc); pub fn build( - image_storage: Arc, + object_storage: Arc, image_ref_command: Arc, image_ref_query: Arc, event_publisher: Arc, @@ -27,7 +27,7 @@ pub fn build( let format = config.format; let handler = Arc::new(ImageConversionHandler::new( - Arc::clone(&image_storage), + Arc::clone(&object_storage), image_ref_command, format, )) as Arc; diff --git a/crates/adapters/image-converter/src/tests/handler.rs b/crates/adapters/image-converter/src/tests/handler.rs index 616e737..9eaa2fb 100644 --- a/crates/adapters/image-converter/src/tests/handler.rs +++ b/crates/adapters/image-converter/src/tests/handler.rs @@ -1,5 +1,5 @@ use super::*; -use image_storage::ImageStorageAdapter; +use object_storage::ObjectStorageAdapter; use object_store::memory::InMemory; use std::sync::Mutex; @@ -27,8 +27,8 @@ impl ImageRefCommand for MockImageRef { } } -fn in_memory_storage() -> Arc { - Arc::new(ImageStorageAdapter::new(Arc::new(InMemory::new()))) +fn in_memory_storage() -> Arc { + Arc::new(ObjectStorageAdapter::new(Arc::new(InMemory::new()))) } fn tiny_jpeg() -> Vec { @@ -44,7 +44,7 @@ async fn ignores_non_image_stored_events() { let storage = in_memory_storage(); let image_ref = MockImageRef::new(); let handler = ImageConversionHandler::new( - Arc::clone(&storage) as Arc, + Arc::clone(&storage) as Arc, Arc::clone(&image_ref) as Arc, Format::Avif, ); @@ -68,7 +68,7 @@ async fn skips_already_converted_avif_key() { .unwrap(); let image_ref = MockImageRef::new(); let handler = ImageConversionHandler::new( - Arc::clone(&storage) as Arc, + Arc::clone(&storage) as Arc, Arc::clone(&image_ref) as Arc, Format::Avif, ); @@ -92,7 +92,7 @@ async fn skips_already_converted_webp_key() { .unwrap(); let image_ref = MockImageRef::new(); let handler = ImageConversionHandler::new( - Arc::clone(&storage) as Arc, + Arc::clone(&storage) as Arc, Arc::clone(&image_ref) as Arc, Format::Webp, ); @@ -113,7 +113,7 @@ async fn converts_jpeg_to_avif_and_swaps_key() { storage.store("avatars/u1", &tiny_jpeg()).await.unwrap(); let image_ref = MockImageRef::new(); let handler = ImageConversionHandler::new( - Arc::clone(&storage) as Arc, + Arc::clone(&storage) as Arc, Arc::clone(&image_ref) as Arc, Format::Avif, ); @@ -139,7 +139,7 @@ async fn converts_jpeg_to_webp_and_swaps_key() { storage.store("avatars/u1", &tiny_jpeg()).await.unwrap(); let image_ref = MockImageRef::new(); let handler = ImageConversionHandler::new( - Arc::clone(&storage) as Arc, + Arc::clone(&storage) as Arc, Arc::clone(&image_ref) as Arc, Format::Webp, ); diff --git a/crates/adapters/image-storage/src/lib.rs b/crates/adapters/image-storage/src/lib.rs index 9435bf9..5ed6d82 100644 --- a/crates/adapters/image-storage/src/lib.rs +++ b/crates/adapters/image-storage/src/lib.rs @@ -5,17 +5,17 @@ use async_trait::async_trait; use domain::{ errors::DomainError, events::DomainEvent, - ports::{EventHandler, ImageStorage}, + ports::{EventHandler, ObjectStorage}, }; use futures::StreamExt; use object_store::{ObjectStore, path::Path}; use std::sync::Arc; -pub struct ImageStorageAdapter { +pub struct ObjectStorageAdapter { store: Arc, } -impl ImageStorageAdapter { +impl ObjectStorageAdapter { pub fn new(store: Arc) -> Self { Self { store } } @@ -26,7 +26,7 @@ impl ImageStorageAdapter { } #[async_trait] -impl ImageStorage for ImageStorageAdapter { +impl ObjectStorage for ObjectStorageAdapter { async fn store(&self, key: &str, image_bytes: &[u8]) -> Result { let path = Path::from(key); self.store @@ -78,12 +78,12 @@ impl ImageStorage for ImageStorageAdapter { } pub struct ImageCleanupHandler { - image_storage: Arc, + object_storage: Arc, } impl ImageCleanupHandler { - pub fn new(image_storage: Arc) -> Self { - Self { image_storage } + pub fn new(object_storage: Arc) -> Self { + Self { object_storage } } } @@ -97,15 +97,15 @@ impl EventHandler for ImageCleanupHandler { let Some(path) = poster_path else { return Ok(()); }; - if let Err(e) = self.image_storage.delete(path.value()).await { + if let Err(e) = self.object_storage.delete(path.value()).await { tracing::warn!("image cleanup failed for {}: {e}", path.value()); } Ok(()) } } -pub fn create() -> anyhow::Result> { - Ok(Arc::new(ImageStorageAdapter::from_config( +pub fn create() -> anyhow::Result> { + Ok(Arc::new(ObjectStorageAdapter::from_config( StorageConfig::from_env()?, ))) } diff --git a/crates/adapters/image-storage/src/tests/lib.rs b/crates/adapters/image-storage/src/tests/lib.rs index 0ffa6d4..6c34fe1 100644 --- a/crates/adapters/image-storage/src/tests/lib.rs +++ b/crates/adapters/image-storage/src/tests/lib.rs @@ -1,8 +1,8 @@ use super::*; use object_store::memory::InMemory; -fn adapter() -> ImageStorageAdapter { - ImageStorageAdapter::new(Arc::new(InMemory::new())) +fn adapter() -> ObjectStorageAdapter { + ObjectStorageAdapter::new(Arc::new(InMemory::new())) } #[tokio::test] @@ -46,7 +46,7 @@ async fn cleanup_handler_deletes_on_movie_deleted() { let inner = Arc::new(adapter()); inner.store("some-uuid", b"img").await.unwrap(); let path = PosterPath::new("some-uuid".to_string()).unwrap(); - let handler = ImageCleanupHandler::new(Arc::clone(&inner) as Arc); + let handler = ImageCleanupHandler::new(Arc::clone(&inner) as Arc); handler .handle(&DomainEvent::MovieDeleted { movie_id: MovieId::from_uuid(uuid::Uuid::new_v4()), diff --git a/crates/adapters/poster-sync/src/lib.rs b/crates/adapters/poster-sync/src/lib.rs index 6732818..4d795c4 100644 --- a/crates/adapters/poster-sync/src/lib.rs +++ b/crates/adapters/poster-sync/src/lib.rs @@ -5,7 +5,7 @@ use domain::{ errors::DomainError, events::DomainEvent, ports::{ - EventHandler, EventPublisher, ImageStorage, MetadataClient, MovieRepository, + EventHandler, EventPublisher, ObjectStorage, MetadataClient, MovieRepository, PosterFetcherClient, }, value_objects::{ExternalMetadataId, MovieId, PosterPath}, @@ -15,7 +15,7 @@ pub struct PosterSyncHandler { movie_repository: Arc, metadata_client: Arc, poster_fetcher: Arc, - image_storage: Arc, + object_storage: Arc, event_publisher: Arc, max_retries: u32, } @@ -25,7 +25,7 @@ impl PosterSyncHandler { movie_repository: Arc, metadata_client: Arc, poster_fetcher: Arc, - image_storage: Arc, + object_storage: Arc, event_publisher: Arc, max_retries: u32, ) -> Self { @@ -33,7 +33,7 @@ impl PosterSyncHandler { movie_repository, metadata_client, poster_fetcher, - image_storage, + object_storage, event_publisher, max_retries, } @@ -67,7 +67,7 @@ impl PosterSyncHandler { let image_bytes = self.poster_fetcher.fetch_poster_bytes(&poster_url).await?; let stored_path = self - .image_storage + .object_storage .store(&movie_id.value().to_string(), &image_bytes) .await?; if let Err(e) = self diff --git a/crates/adapters/tmdb-enrichment/src/lib.rs b/crates/adapters/tmdb-enrichment/src/lib.rs index 1d11132..529aa4b 100644 --- a/crates/adapters/tmdb-enrichment/src/lib.rs +++ b/crates/adapters/tmdb-enrichment/src/lib.rs @@ -8,7 +8,7 @@ use domain::{ events::DomainEvent, models::{CastMember, CrewMember, Genre, Keyword, MovieProfile}, ports::{ - EventHandler, ImageStorage, MovieEnrichmentClient, MovieProfileRepository, MovieRepository, + EventHandler, ObjectStorage, MovieEnrichmentClient, MovieProfileRepository, MovieRepository, PersonCommand, SearchCommand, }, value_objects::MovieId, @@ -229,7 +229,7 @@ pub struct EnrichmentHandler { pub profile_repo: Arc, pub person_command: Arc, pub search_command: Arc, - pub image_storage: Arc, + pub object_storage: Arc, http: reqwest::Client, } @@ -240,7 +240,7 @@ impl EnrichmentHandler { profile_repo: Arc, person_command: Arc, search_command: Arc, - image_storage: Arc, + object_storage: Arc, ) -> Self { Self { enrichment_client, @@ -248,7 +248,7 @@ impl EnrichmentHandler { profile_repo, person_command, search_command, - image_storage, + object_storage, http: reqwest::Client::new(), } } @@ -259,14 +259,14 @@ impl EnrichmentHandler { continue; }; let key = format!("cast{path}"); - if self.image_storage.get(&key).await.is_ok() { + if self.object_storage.get(&key).await.is_ok() { continue; } let url = format!("https://image.tmdb.org/t/p/w185{path}"); match self.http.get(&url).send().await { Ok(resp) if resp.status().is_success() => { if let Ok(bytes) = resp.bytes().await - && let Err(e) = self.image_storage.store(&key, &bytes).await + && let Err(e) = self.object_storage.store(&key, &bytes).await { tracing::debug!("cast photo store failed for {path}: {e}"); } diff --git a/crates/application/src/context.rs b/crates/application/src/context.rs index 39cc05c..dd78313 100644 --- a/crates/application/src/context.rs +++ b/crates/application/src/context.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use domain::ports::{ - AuthService, DiaryExporter, DiaryRepository, DocumentParser, EventPublisher, ImageStorage, + AuthService, DiaryExporter, DiaryRepository, DocumentParser, EventPublisher, ObjectStorage, ImportProfileRepository, ImportSessionRepository, MetadataClient, MovieProfileRepository, MovieRepository, PasswordHasher, PersonCommand, PersonQuery, PosterFetcherClient, RemoteWatchlistRepository, ReviewRepository, SearchCommand, SearchPort, SocialQueryPort, @@ -42,7 +42,7 @@ pub struct Services { pub password_hasher: Arc, pub metadata: Arc, pub poster_fetcher: Arc, - pub image_storage: Arc, + pub object_storage: Arc, pub event_publisher: Arc, pub diary_exporter: Arc, pub document_parser: Arc, diff --git a/crates/application/src/movies/sync_poster.rs b/crates/application/src/movies/sync_poster.rs index 2db3ddb..9a4d166 100644 --- a/crates/application/src/movies/sync_poster.rs +++ b/crates/application/src/movies/sync_poster.rs @@ -52,7 +52,7 @@ pub async fn execute(ctx: &AppContext, cmd: SyncPosterCommand) -> Result<(), Dom let stored_path = ctx .services - .image_storage + .object_storage .store(&movie_id.value().to_string(), &image_bytes) .await?; diff --git a/crates/application/src/test_helpers.rs b/crates/application/src/test_helpers.rs index 5b572ce..e6a3abb 100644 --- a/crates/application/src/test_helpers.rs +++ b/crates/application/src/test_helpers.rs @@ -6,7 +6,7 @@ use domain::testing::{ }; use domain::{ ports::{ - AuthService, DiaryExporter, DiaryRepository, DocumentParser, EventPublisher, ImageStorage, + AuthService, DiaryExporter, DiaryRepository, DocumentParser, EventPublisher, ObjectStorage, ImportProfileRepository, ImportSessionRepository, MetadataClient, MovieProfileRepository, MovieRepository, PasswordHasher, PersonCommand, PersonQuery, PosterFetcherClient, ReviewRepository, SearchCommand, SearchPort, StatsRepository, UserProfileFieldsRepository, @@ -16,7 +16,7 @@ use domain::{ testing::{ FakeAuthService, FakeMetadataClient, FakePasswordHasher, InMemoryMovieRepository, InMemoryReviewRepository, InMemoryUserRepository, InMemoryWatchlistRepository, - NoopEventPublisher, NoopImageStorage, PanicDiaryExporter, PanicDiaryRepository, + NoopEventPublisher, NoopObjectStorage, PanicDiaryExporter, PanicDiaryRepository, PanicDocumentParser, PanicImportProfileRepository, PanicImportSessionRepository, PanicMovieProfileRepository, PanicPersonCommand, PanicPersonQuery, PanicPosterFetcher, PanicProfileFieldsRepo, PanicSearchCommand, PanicSearchPort, PanicStatsRepository, @@ -38,7 +38,7 @@ pub struct TestContextBuilder { pub stats_repo: Arc, pub metadata_client: Arc, pub poster_fetcher: Arc, - pub image_storage: Arc, + pub object_storage: Arc, pub event_publisher: Arc, pub auth_service: Arc, pub password_hasher: Arc, @@ -70,7 +70,7 @@ impl TestContextBuilder { stats_repo: Arc::new(PanicStatsRepository), metadata_client: Arc::new(FakeMetadataClient), poster_fetcher: Arc::new(PanicPosterFetcher), - image_storage: Arc::new(NoopImageStorage), + object_storage: Arc::new(NoopObjectStorage), event_publisher: NoopEventPublisher::new(), auth_service: Arc::new(FakeAuthService), password_hasher: Arc::new(FakePasswordHasher), @@ -172,7 +172,7 @@ impl TestContextBuilder { password_hasher: self.password_hasher, metadata: self.metadata_client, poster_fetcher: self.poster_fetcher, - image_storage: self.image_storage, + object_storage: self.object_storage, event_publisher: self.event_publisher, diary_exporter: self.diary_exporter, document_parser: self.document_parser, diff --git a/crates/application/src/users/update_profile.rs b/crates/application/src/users/update_profile.rs index bb74f4d..90baf89 100644 --- a/crates/application/src/users/update_profile.rs +++ b/crates/application/src/users/update_profile.rs @@ -21,10 +21,10 @@ pub async fn execute(ctx: &AppContext, cmd: UpdateProfileCommand) -> Result<(), )); } if let Some(old_path) = user.avatar_path() { - let _ = ctx.services.image_storage.delete(old_path).await; + let _ = ctx.services.object_storage.delete(old_path).await; } let key = format!("avatars/{}", user_id.value()); - let stored = ctx.services.image_storage.store(&key, &bytes).await?; + let stored = ctx.services.object_storage.store(&key, &bytes).await?; if let Err(e) = ctx .services .event_publisher @@ -49,10 +49,10 @@ pub async fn execute(ctx: &AppContext, cmd: UpdateProfileCommand) -> Result<(), )); } if let Some(old_path) = user.banner_path() { - let _ = ctx.services.image_storage.delete(old_path).await; + let _ = ctx.services.object_storage.delete(old_path).await; } let key = format!("banners/{}", user_id.value()); - let stored = ctx.services.image_storage.store(&key, &bytes).await?; + let stored = ctx.services.object_storage.store(&key, &bytes).await?; if let Err(e) = ctx .services .event_publisher diff --git a/crates/application/src/wrapup/delete.rs b/crates/application/src/wrapup/delete.rs index 5f45939..60949a9 100644 --- a/crates/application/src/wrapup/delete.rs +++ b/crates/application/src/wrapup/delete.rs @@ -11,7 +11,7 @@ pub async fn execute(ctx: &AppContext, id: WrapUpId) -> Result<(), DomainError> .await? .ok_or_else(|| DomainError::NotFound("wrap-up not found".into()))?; - let storage = WrapUpStorage::new(ctx.services.image_storage.clone()); + let storage = WrapUpStorage::new(ctx.services.object_storage.clone()); let _ = storage.delete_video(&id).await; ctx.repos.wrapup_repo.delete(&id).await diff --git a/crates/application/src/wrapup/handle_requested.rs b/crates/application/src/wrapup/handle_requested.rs index 362f937..7ccebd8 100644 --- a/crates/application/src/wrapup/handle_requested.rs +++ b/crates/application/src/wrapup/handle_requested.rs @@ -46,7 +46,7 @@ pub async fn execute( .await?; if let Some(ref renderer) = ctx.services.video_renderer { - let asset_storage = WrapUpStorage::new(ctx.services.image_storage.clone()); + let asset_storage = WrapUpStorage::new(ctx.services.object_storage.clone()); let poster_images = asset_storage.resolve_poster_images(&report.poster_paths).await; let cast_images = asset_storage .resolve_cast_images(&report.top_cast_profile_paths) diff --git a/crates/application/src/wrapup/storage.rs b/crates/application/src/wrapup/storage.rs index 7230d32..11cde46 100644 --- a/crates/application/src/wrapup/storage.rs +++ b/crates/application/src/wrapup/storage.rs @@ -1,14 +1,14 @@ use domain::errors::DomainError; -use domain::ports::ImageStorage; +use domain::ports::ObjectStorage; use domain::value_objects::WrapUpId; use std::sync::Arc; pub struct WrapUpStorage { - inner: Arc, + inner: Arc, } impl WrapUpStorage { - pub fn new(storage: Arc) -> Self { + pub fn new(storage: Arc) -> Self { Self { inner: storage } } diff --git a/crates/domain/src/ports.rs b/crates/domain/src/ports.rs index c153b27..898c18c 100644 --- a/crates/domain/src/ports.rs +++ b/crates/domain/src/ports.rs @@ -184,7 +184,7 @@ pub trait PosterFetcherClient: Send + Sync { } #[async_trait] -pub trait ImageStorage: Send + Sync { +pub trait ObjectStorage: Send + Sync { /// Stores `image_bytes` at `key` and returns the stored key. async fn store(&self, key: &str, image_bytes: &[u8]) -> Result; async fn get(&self, key: &str) -> Result, DomainError>; diff --git a/crates/domain/src/testing.rs b/crates/domain/src/testing.rs index 893a0c7..eb8f9a4 100644 --- a/crates/domain/src/testing.rs +++ b/crates/domain/src/testing.rs @@ -20,7 +20,7 @@ use crate::{ }, ports::{ AuthService, DiaryExporter, DiaryRepository, DocumentParser, EventPublisher, FeedSortBy, - FollowingFilter, GeneratedToken, ImageStorage, ImportProfileRepository, + FollowingFilter, GeneratedToken, ObjectStorage, ImportProfileRepository, ImportSessionRepository, MetadataClient, MetadataSearchCriteria, MovieProfileRepository, MovieRepository, PasswordHasher, PersonCommand, PersonQuery, PosterFetcherClient, ReviewRepository, SearchCommand, SearchPort, StatsRepository, UserProfileFieldsRepository, @@ -351,12 +351,12 @@ impl EventPublisher for NoopEventPublisher { } } -// ── NoopImageStorage ────────────────────────────────────────────────────────── +// ── NoopObjectStorage ────────────────────────────────────────────────────────── -pub struct NoopImageStorage; +pub struct NoopObjectStorage; #[async_trait] -impl ImageStorage for NoopImageStorage { +impl ObjectStorage for NoopObjectStorage { async fn store(&self, key: &str, _image_bytes: &[u8]) -> Result { Ok(format!("noop://{key}")) } diff --git a/crates/presentation/src/factory.rs b/crates/presentation/src/factory.rs index 9c4f671..712bce2 100644 --- a/crates/presentation/src/factory.rs +++ b/crates/presentation/src/factory.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use anyhow::Context; use domain::ports::{ - AuthService, ImageStorage, LocalApContentQuery, MetadataClient, PasswordHasher, + AuthService, ObjectStorage, LocalApContentQuery, MetadataClient, PasswordHasher, PosterFetcherClient, UserProfileFieldsRepository, WatchEventRepository, WebhookTokenRepository, }; @@ -128,7 +128,7 @@ pub fn build_poster_fetcher() -> anyhow::Result> { poster_fetcher::create() } -pub fn build_image_storage() -> anyhow::Result> { +pub fn build_object_storage() -> anyhow::Result> { image_storage::create() } diff --git a/crates/presentation/src/handlers/images.rs b/crates/presentation/src/handlers/images.rs index f5be8e8..04820aa 100644 --- a/crates/presentation/src/handlers/images.rs +++ b/crates/presentation/src/handlers/images.rs @@ -13,7 +13,7 @@ pub async fn get_image( if key.starts_with("http://") || key.starts_with("https://") { return axum::response::Redirect::temporary(&key).into_response(); } - match state.app_ctx.services.image_storage.get(&key).await { + match state.app_ctx.services.object_storage.get(&key).await { Ok(bytes) => { let mime = infer::get(&bytes) .map(|t| t.mime_type()) diff --git a/crates/presentation/src/handlers/wrapup.rs b/crates/presentation/src/handlers/wrapup.rs index 692c3fc..e957a3d 100644 --- a/crates/presentation/src/handlers/wrapup.rs +++ b/crates/presentation/src/handlers/wrapup.rs @@ -172,7 +172,7 @@ pub async fn get_video(State(state): State, Path(id): Path) -> i match state .app_ctx .services - .image_storage + .object_storage .get_stream(&video_key) .await { diff --git a/crates/presentation/src/main.rs b/crates/presentation/src/main.rs index faf9d8c..1709156 100644 --- a/crates/presentation/src/main.rs +++ b/crates/presentation/src/main.rs @@ -57,7 +57,7 @@ async fn wire_dependencies() -> anyhow::Result<(AppState, axum::Router)> { let (auth_service, password_hasher) = factory::build_auth_adapters()?; let metadata_client = factory::build_metadata_client()?; let poster_fetcher = factory::build_poster_fetcher()?; - let image_storage = factory::build_image_storage()?; + let object_storage = factory::build_object_storage()?; let db = factory::build_database_adapters(&backend, &database_url).await?; let ap_content_repo = db.ap_content; @@ -201,7 +201,7 @@ async fn wire_dependencies() -> anyhow::Result<(AppState, axum::Router)> { password_hasher, metadata: metadata_client, poster_fetcher, - image_storage, + object_storage, event_publisher: event_publisher_arc, diary_exporter: Arc::new(ExportAdapter) as Arc, document_parser: Arc::new(ImporterDocumentParser) as Arc, diff --git a/crates/presentation/src/tests/extractors.rs b/crates/presentation/src/tests/extractors.rs index 0da1a83..90b99f7 100644 --- a/crates/presentation/src/tests/extractors.rs +++ b/crates/presentation/src/tests/extractors.rs @@ -19,7 +19,7 @@ use domain::{ collections::{PageParams, Paginated}, }, ports::{ - AuthService, DiaryRepository, EventPublisher, GeneratedToken, ImageStorage, MetadataClient, + AuthService, DiaryRepository, EventPublisher, GeneratedToken, ObjectStorage, MetadataClient, MovieRepository, PasswordHasher, PersonCommand, PersonQuery, PosterFetcherClient, ReviewRepository, SearchCommand, SearchPort, StatsRepository, UserRepository, WatchlistRepository, @@ -194,7 +194,7 @@ impl PosterFetcherClient for Panic { } } #[async_trait::async_trait] -impl ImageStorage for Panic { +impl ObjectStorage for Panic { async fn store(&self, _: &str, _: &[u8]) -> Result { panic!() } @@ -670,7 +670,7 @@ pub fn make_test_state(auth_service: Arc) -> crate::state::AppS password_hasher: Arc::clone(&repo) as _, metadata: Arc::clone(&repo) as _, poster_fetcher: Arc::clone(&repo) as _, - image_storage: Arc::clone(&repo) as _, + object_storage: Arc::clone(&repo) as _, event_publisher: Arc::clone(&repo) as _, diary_exporter: Arc::clone(&repo) as _, document_parser: Arc::clone(&repo) as _, diff --git a/crates/presentation/tests/api_test.rs b/crates/presentation/tests/api_test.rs index 5b59745..1f23b57 100644 --- a/crates/presentation/tests/api_test.rs +++ b/crates/presentation/tests/api_test.rs @@ -18,7 +18,7 @@ use domain::{ SearchQuery, SearchResults, User, }, ports::{ - AuthService, EventPublisher, GeneratedToken, ImageStorage, MetadataClient, + AuthService, EventPublisher, GeneratedToken, ObjectStorage, MetadataClient, MetadataSearchCriteria, PasswordHasher, PersonCommand, PersonQuery, PosterFetcherClient, SearchCommand, SearchPort, UserRepository, }, @@ -61,9 +61,9 @@ impl PosterFetcherClient for PanicFetcher { } } -struct PanicImageStorage; +struct PanicObjectStorage; #[async_trait] -impl ImageStorage for PanicImageStorage { +impl ObjectStorage for PanicObjectStorage { async fn store(&self, _: &str, _: &[u8]) -> Result { panic!() } @@ -430,7 +430,7 @@ async fn test_app() -> Router { password_hasher: Arc::new(PanicHasher), metadata: Arc::new(PanicMeta), poster_fetcher: Arc::new(PanicFetcher), - image_storage: Arc::new(PanicImageStorage), + object_storage: Arc::new(PanicObjectStorage), event_publisher: Arc::new(NoopEventPublisher), diary_exporter: Arc::new(PanicExporter), document_parser: Arc::new(PanicDocumentParser), diff --git a/crates/worker/src/main.rs b/crates/worker/src/main.rs index f396e5b..8835822 100644 --- a/crates/worker/src/main.rs +++ b/crates/worker/src/main.rs @@ -34,7 +34,7 @@ async fn main() -> anyhow::Result<()> { let (auth_service, password_hasher) = auth::create()?; let metadata_client = metadata::create()?; let poster_fetcher = poster_fetcher::create()?; - let image_storage = image_storage::create()?; + let object_storage = image_storage::create()?; let db = db::connect(&database_url, &backend).await?; let (event_publisher_arc, consumer_arc) = event_bus::create(&db.db_pool).await?; @@ -100,7 +100,7 @@ async fn main() -> anyhow::Result<()> { password_hasher, metadata: metadata_client, poster_fetcher, - image_storage, + object_storage, event_publisher: event_publisher_arc, diary_exporter: Arc::new(ExportAdapter) as Arc, document_parser: Arc::new(ImporterDocumentParser) as Arc, @@ -155,7 +155,7 @@ async fn main() -> anyhow::Result<()> { Arc::clone(&ctx.repos.movie_profile), Arc::clone(&ctx.repos.person_command), Arc::clone(&ctx.repos.search_command), - Arc::clone(&ctx.services.image_storage), + Arc::clone(&ctx.services.object_storage), )) as Arc; let job = Arc::new(application::jobs::EnrichmentStalenessJob::new(ctx.clone())) as Arc; @@ -170,7 +170,7 @@ async fn main() -> anyhow::Result<()> { // ── Image conversion ────────────────────────────────────────────────────── let conversion = image_converter::build( - Arc::clone(&ctx.services.image_storage), + Arc::clone(&ctx.services.object_storage), image_ref_command, image_ref_query, Arc::clone(&ctx.services.event_publisher), @@ -210,13 +210,13 @@ async fn main() -> anyhow::Result<()> { Arc::clone(&ctx.repos.movie), Arc::clone(&ctx.services.metadata), Arc::clone(&ctx.services.poster_fetcher), - Arc::clone(&ctx.services.image_storage), + Arc::clone(&ctx.services.object_storage), Arc::clone(&ctx.services.event_publisher), 3, )) as Arc; let cleanup = Arc::new(image_storage::ImageCleanupHandler::new(Arc::clone( - &ctx.services.image_storage, + &ctx.services.object_storage, ))) as Arc; #[cfg(not(feature = "federation"))]