Refresh covers asynchronously
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user