Streamline function implementation (no double negative)
This commit is contained in:
@@ -81,12 +81,9 @@ defmodule MusicLibrary.Records.Enrichment do
|
|||||||
|
|
||||||
@spec extract_colors(Record.t()) :: {:ok, Record.t()} | {:error, term()}
|
@spec extract_colors(Record.t()) :: {:ok, Record.t()} | {:error, term()}
|
||||||
def extract_colors(record) do
|
def extract_colors(record) do
|
||||||
with asset when not is_nil(asset) <- Assets.get(record.cover_hash),
|
with {:ok, asset} <- get_asset(record.cover_hash),
|
||||||
{:ok, colors} <- @color_extractor.extract_dominant_colors(asset.content) do
|
{:ok, colors} <- @color_extractor.extract_dominant_colors(asset.content) do
|
||||||
Records.update_record(record, %{dominant_colors: colors})
|
Records.update_record(record, %{dominant_colors: colors})
|
||||||
else
|
|
||||||
nil -> {:error, :asset_not_found}
|
|
||||||
error -> error
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -125,4 +122,12 @@ defmodule MusicLibrary.Records.Enrichment do
|
|||||||
defp record_meta(record) do
|
defp record_meta(record) do
|
||||||
%{title: record.title, artists: Enum.map(record.artists, & &1.name)}
|
%{title: record.title, artists: Enum.map(record.artists, & &1.name)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp get_asset(cover_hash) do
|
||||||
|
if asset = Assets.get(cover_hash) do
|
||||||
|
{:ok, asset}
|
||||||
|
else
|
||||||
|
{:error, :asset_not_found}
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user