Refresh covers asynchronously

This commit is contained in:
Claudio Ortolina
2025-04-14 10:58:47 +01:00
parent 995773f673
commit a3b6510c40
4 changed files with 47 additions and 10 deletions
+19 -1
View File
@@ -6,7 +6,7 @@ defmodule MusicLibrary.Records do
import Ecto.Query, warn: false
alias MusicLibrary.Records.{ArtistRecord, Cover, Record, SearchParser}
alias MusicLibrary.Repo
alias MusicLibrary.{BackgroundRepo, Repo, Worker}
def essential_fields do
[
@@ -200,6 +200,12 @@ defmodule MusicLibrary.Records do
end
end
def refresh_cover_async(record_id) do
%{"id" => record_id}
|> Worker.RefreshCover.new()
|> BackgroundRepo.insert()
end
def resize_cover(record) do
{:ok, thumb_data} = Cover.resize(record.cover_data)
@@ -267,4 +273,16 @@ defmodule MusicLibrary.Records do
def change_record(%Record{} = record, attrs \\ %{}) do
Record.changeset(record, attrs)
end
def subscribe(record_id) do
Phoenix.PubSub.subscribe(MusicLibrary.PubSub, "records:#{record_id}")
end
def notify_update(record) do
Phoenix.PubSub.broadcast(
MusicLibrary.PubSub,
"records:#{record.id}",
{:update, record}
)
end
end
+2 -1
View File
@@ -4,7 +4,8 @@ defmodule MusicLibrary.Worker.RefreshCover do
@impl Oban.Worker
def perform(%Oban.Job{args: %{"id" => record_id}}) do
record = MusicLibrary.Records.get_record!(record_id)
{:ok, _} = MusicLibrary.Records.refresh_cover(record)
{:ok, new_record} = MusicLibrary.Records.refresh_cover(record)
MusicLibrary.Records.notify_update(new_record)
:ok
end
end