Pick color extraction strategy from dropdown

This commit is contained in:
Claudio Ortolina
2025-06-08 20:01:49 +01:00
parent 2bbb91769d
commit 2cc1d7ca8f
10 changed files with 185 additions and 23 deletions
@@ -0,0 +1,16 @@
defmodule MusicLibrary.Worker.ExtractColors do
use Oban.Worker, queue: :heavy_writes, max_attempts: 3
alias MusicLibrary.{Colors, Records}
@impl Oban.Worker
def perform(%Oban.Job{args: %{"id" => record_id, "method" => method}}) do
record = MusicLibrary.Records.get_record!(record_id)
method = String.to_existing_atom(method)
with {:ok, colors} <- Colors.extract_colors(record.cover_data, method),
{:ok, updated_record} <- Records.update_record(record, %{dominant_colors: colors}) do
MusicLibrary.Records.notify_update(updated_record)
end
end
end
@@ -1,12 +0,0 @@
defmodule MusicLibrary.Worker.GenerateDominantColors do
use Oban.Worker, queue: :heavy_writes, max_attempts: 3
@impl Oban.Worker
def perform(%Oban.Job{args: %{"id" => record_id}}) do
record = MusicLibrary.Records.get_record!(record_id)
with {:ok, updated_record} <- MusicLibrary.Records.generate_dominant_colors(record) do
MusicLibrary.Records.notify_update(updated_record)
end
end
end