From 90b3fa1fdc2eaeeb98d35ec11a6358ad4b3752a4 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sat, 20 Sep 2025 07:42:38 +0300 Subject: [PATCH] Refactor Records.Cover to Assets.Image --- .../{records/cover.ex => assets/image.ex} | 4 ++-- lib/music_library/records.ex | 10 +++++----- .../controllers/asset_controller.ex | 7 +++---- priv/cover-not-found.jpg | Bin 5307 -> 0 bytes priv/image-not-found.jpg | Bin 0 -> 54627 bytes .../cover_test.exs => assets/image_test.exs} | 10 ++++------ test/music_library/records_test.exs | 4 ++-- .../live/collection_live/index_test.exs | 8 ++++---- 8 files changed, 20 insertions(+), 23 deletions(-) rename lib/music_library/{records/cover.ex => assets/image.ex} (92%) delete mode 100644 priv/cover-not-found.jpg create mode 100644 priv/image-not-found.jpg rename test/music_library/{records/cover_test.exs => assets/image_test.exs} (53%) diff --git a/lib/music_library/records/cover.ex b/lib/music_library/assets/image.ex similarity index 92% rename from lib/music_library/records/cover.ex rename to lib/music_library/assets/image.ex index 6d2bd2bf..7041de57 100644 --- a/lib/music_library/records/cover.ex +++ b/lib/music_library/assets/image.ex @@ -1,7 +1,7 @@ -defmodule MusicLibrary.Records.Cover do +defmodule MusicLibrary.Assets.Image do alias Vix.Vips.{Image, Operation} - fallback_path = Application.app_dir(:music_library, ["priv", "cover-not-found.jpg"]) + fallback_path = Application.app_dir(:music_library, ["priv", "image-not-found.jpg"]) fallback_data = File.read!(fallback_path) @external_resource fallback_path diff --git a/lib/music_library/records.ex b/lib/music_library/records.ex index 065b9b8c..102160bc 100644 --- a/lib/music_library/records.ex +++ b/lib/music_library/records.ex @@ -7,7 +7,7 @@ defmodule MusicLibrary.Records do alias MusicLibrary.Artists alias MusicLibrary.Assets - alias MusicLibrary.Records.{ArtistRecord, Cover, Record, SearchParser} + alias MusicLibrary.Records.{ArtistRecord, Record, SearchParser} alias MusicLibrary.{BackgroundRepo, Repo, Worker} def essential_fields do @@ -228,8 +228,8 @@ defmodule MusicLibrary.Records do defp get_cover_art_or_default(musicbrainz_id) do case MusicBrainz.get_cover_art({:musicbrainz_id, musicbrainz_id}) do - {:error, :cover_not_available} -> {:ok, Cover.fallback_data()} - {:ok, cover_data} -> Cover.resize(cover_data) + {:error, :cover_not_available} -> {:ok, Assets.Image.fallback_data()} + {:ok, cover_data} -> Assets.Image.resize(cover_data) end end @@ -259,7 +259,7 @@ defmodule MusicLibrary.Records do def refresh_cover(record) do with {:ok, cover_data} <- MusicBrainz.get_cover_art({:url, record.cover_url}), - {:ok, thumb_data} <- Cover.resize(cover_data), + {:ok, thumb_data} <- Assets.Image.resize(cover_data), {:ok, asset} <- Assets.store_image(%{content: thumb_data, format: "image/jpeg"}) do record |> Record.set_cover_hash(asset.hash) @@ -286,7 +286,7 @@ defmodule MusicLibrary.Records do end def resize_cover(record) do - with {:ok, thumb_data} <- Cover.resize(record.cover_data), + with {:ok, thumb_data} <- Assets.Image.resize(record.cover_data), {:ok, asset} <- Assets.store_image(%{content: thumb_data, format: "image/jpeg"}) do record |> Record.set_cover_hash(asset.hash) diff --git a/lib/music_library_web/controllers/asset_controller.ex b/lib/music_library_web/controllers/asset_controller.ex index 1c18274f..c21469dc 100644 --- a/lib/music_library_web/controllers/asset_controller.ex +++ b/lib/music_library_web/controllers/asset_controller.ex @@ -2,8 +2,7 @@ defmodule MusicLibraryWeb.AssetController do use MusicLibraryWeb, :controller alias MusicLibrary.Assets - alias MusicLibrary.Assets.{Cache, Transform} - alias MusicLibrary.Records.Cover + alias MusicLibrary.Assets.{Cache, Image, Transform} # 1 year in seconds @cache_duration 60 * 60 * 24 * 365 @@ -31,10 +30,10 @@ defmodule MusicLibraryWeb.AssetController do image_data = if transform.width do # TODO: find a way to cache computation, or pre-compute thumb and store it - {:ok, data} = Cover.resize(asset.content, transform.width, format) + {:ok, data} = Image.resize(asset.content, transform.width, format) data else - {:ok, data} = Cover.convert(asset.content, asset.format, format) + {:ok, data} = Image.convert(asset.content, asset.format, format) data end diff --git a/priv/cover-not-found.jpg b/priv/cover-not-found.jpg deleted file mode 100644 index f01650d2c52eb17356b99b5bfb10be3122636fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5307 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 E1sGm@VgLXD diff --git a/priv/image-not-found.jpg b/priv/image-not-found.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d51c97e616ed30263422bf3304dd455f1544dc4 GIT binary patch literal 54627 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 B{z(7; literal 0 HcmV?d00001 diff --git a/test/music_library/records/cover_test.exs b/test/music_library/assets/image_test.exs similarity index 53% rename from test/music_library/records/cover_test.exs rename to test/music_library/assets/image_test.exs index e7384310..53ec303d 100644 --- a/test/music_library/records/cover_test.exs +++ b/test/music_library/assets/image_test.exs @@ -1,15 +1,13 @@ -defmodule MusicLibrary.Records.CoverTest do +defmodule MusicLibrary.Assets.ImageTest do use ExUnit.Case, async: true - import MusicLibrary.Fixtures.Records - - alias MusicLibrary.Records.Cover + alias MusicLibrary.Assets.Image describe "resize/1" do test "it resizes to the desired size" do # Use the cached cover data which is much faster than reading from disk - cover_data = marbles_cover_data() - {:ok, resized_cover} = Cover.resize(cover_data) + cover_data = Image.fallback_data() + {:ok, resized_cover} = Image.resize(cover_data) assert cover_data !== resized_cover end end diff --git a/test/music_library/records_test.exs b/test/music_library/records_test.exs index b3f60c0c..3015d467 100644 --- a/test/music_library/records_test.exs +++ b/test/music_library/records_test.exs @@ -7,7 +7,7 @@ defmodule MusicLibrary.RecordsTest do alias MusicLibrary.Assets alias MusicLibrary.Records - alias MusicLibrary.Records.{Cover, SearchIndex} + alias MusicLibrary.Records.SearchIndex defp create_records(_) do records = [ @@ -336,7 +336,7 @@ defmodule MusicLibrary.RecordsTest do assert updated_record.cover_hash == "6E0D25D1FD1019D771D7EB3F777E2C7C1B06A73A92E56A584D674D86DD8AF441" - {:ok, expected_content} = Cover.resize(raven_cover_data()) + {:ok, expected_content} = Assets.Image.resize(raven_cover_data()) assert Assets.get(updated_record.cover_hash).content == expected_content end diff --git a/test/music_library_web/live/collection_live/index_test.exs b/test/music_library_web/live/collection_live/index_test.exs index 78fe8af0..3aa3e4e9 100644 --- a/test/music_library_web/live/collection_live/index_test.exs +++ b/test/music_library_web/live/collection_live/index_test.exs @@ -8,8 +8,8 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do alias MusicBrainz.ReleaseGroupSearchResult alias MusicLibrary.Assets - alias MusicLibrary.Assets.Transform - alias MusicLibrary.Records.{Cover, Record} + alias MusicLibrary.Assets.{Image, Transform} + alias MusicLibrary.Records.Record # make it a multiple of 4 for easier calculations @default_records_page_size 8 @@ -317,7 +317,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do assert record.cover_hash == "E7238C742E5B8711FC5BFF01A4A1F727D9E404A4D1420429A6B37ABFFC0B5960" - {:ok, resized_cover_data} = Cover.resize(cover_data) + {:ok, resized_cover_data} = Image.resize(cover_data) assets = Assets.get(record.cover_hash) @@ -425,7 +425,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do "E7238C742E5B8711FC5BFF01A4A1F727D9E404A4D1420429A6B37ABFFC0B5960" asset = Assets.get(record.cover_hash) - {:ok, resized_cover_data} = Cover.resize(cover_data) + {:ok, resized_cover_data} = Image.resize(cover_data) assert asset.content == resized_cover_data