Enable unaliased modules ex_slop check

This commit is contained in:
Claudio Ortolina
2026-04-22 20:36:13 +01:00
parent 5c1beede53
commit f7f38d580e
26 changed files with 226 additions and 193 deletions
+11 -10
View File
@@ -5,6 +5,7 @@ defmodule MusicLibrary.RecordSets do
import Ecto.Query, warn: false
alias Ecto.Changeset
alias MusicLibrary.RecordSets.{RecordSet, RecordSetItem}
alias MusicLibrary.Repo
@@ -64,7 +65,7 @@ defmodule MusicLibrary.RecordSets do
|> Repo.preload(items: :record)
end
@spec create_record_set(map()) :: {:ok, RecordSet.t()} | {:error, Ecto.Changeset.t()}
@spec create_record_set(map()) :: {:ok, RecordSet.t()} | {:error, Changeset.t()}
def create_record_set(attrs) do
%RecordSet{}
|> RecordSet.changeset(attrs)
@@ -76,7 +77,7 @@ defmodule MusicLibrary.RecordSets do
end
@spec update_record_set(RecordSet.t(), map()) ::
{:ok, RecordSet.t()} | {:error, Ecto.Changeset.t()}
{:ok, RecordSet.t()} | {:error, Changeset.t()}
def update_record_set(%RecordSet{} = record_set, attrs) do
record_set
|> RecordSet.changeset(attrs)
@@ -87,18 +88,18 @@ defmodule MusicLibrary.RecordSets do
end
end
@spec delete_record_set(RecordSet.t()) :: {:ok, RecordSet.t()} | {:error, Ecto.Changeset.t()}
@spec delete_record_set(RecordSet.t()) :: {:ok, RecordSet.t()} | {:error, Changeset.t()}
def delete_record_set(%RecordSet{} = record_set) do
Repo.delete(record_set)
end
@spec change_record_set(RecordSet.t(), map()) :: Ecto.Changeset.t()
@spec change_record_set(RecordSet.t(), map()) :: Changeset.t()
def change_record_set(%RecordSet{} = record_set, attrs \\ %{}) do
RecordSet.changeset(record_set, attrs)
end
@spec add_record_to_set(RecordSet.t(), String.t()) ::
{:ok, RecordSet.t()} | {:error, Ecto.Changeset.t()}
{:ok, RecordSet.t()} | {:error, Changeset.t()}
def add_record_to_set(%RecordSet{} = record_set, record_id) do
next_position =
from(i in RecordSetItem,
@@ -110,9 +111,9 @@ defmodule MusicLibrary.RecordSets do
%RecordSetItem{}
|> RecordSetItem.changeset(%{position: next_position})
|> Ecto.Changeset.put_change(:record_set_id, record_set.id)
|> Ecto.Changeset.put_change(:record_id, record_id)
|> Ecto.Changeset.unique_constraint([:record_set_id, :record_id])
|> Changeset.put_change(:record_set_id, record_set.id)
|> Changeset.put_change(:record_id, record_id)
|> Changeset.unique_constraint([:record_set_id, :record_id])
|> Repo.insert()
|> case do
{:ok, _item} -> {:ok, get_record_set!(record_set.id)}
@@ -182,11 +183,11 @@ defmodule MusicLibrary.RecordSets do
Repo.transaction(fn ->
item_a
|> Ecto.Changeset.change(position: item_b.position)
|> Changeset.change(position: item_b.position)
|> Repo.update!()
item_b
|> Ecto.Changeset.change(position: item_a.position)
|> Changeset.change(position: item_a.position)
|> Repo.update!()
end)
end
@@ -1,14 +1,15 @@
defmodule MusicLibrary.Worker.FetchArtistInfo do
use Oban.Worker, queue: :default, max_attempts: 3
alias MusicLibrary.Artists
alias MusicLibrary.Records.Similarity
@impl Oban.Worker
def perform(%Oban.Job{args: %{"id" => artist_id}}) do
with {:ok, _artist_info} <- MusicLibrary.Artists.refresh_artist_info(artist_id),
{:ok, _artist_info} <- MusicLibrary.Artists.refresh_wikipedia_data(artist_id),
{:ok, _artist_info} <- MusicLibrary.Artists.refresh_image(artist_id),
{:ok, _artist_info} <- MusicLibrary.Artists.refresh_lastfm_data(artist_id) do
with {:ok, _artist_info} <- Artists.refresh_artist_info(artist_id),
{:ok, _artist_info} <- Artists.refresh_wikipedia_data(artist_id),
{:ok, _artist_info} <- Artists.refresh_image(artist_id),
{:ok, _artist_info} <- Artists.refresh_lastfm_data(artist_id) do
Similarity.regenerate_artist_embeddings(artist_id)
else
{:error, :no_english_wikipedia} -> {:cancel, :no_english_wikipedia}
@@ -1,12 +1,14 @@
defmodule MusicLibrary.Worker.RecordRefreshMusicBrainzData do
use Oban.Worker, queue: :music_brainz, max_attempts: 3
alias MusicLibrary.Records
@impl Oban.Worker
def perform(%Oban.Job{args: %{"id" => record_id}}) do
record = MusicLibrary.Records.get_record!(record_id)
record = Records.get_record!(record_id)
with {:ok, updated_record} <- MusicLibrary.Records.refresh_musicbrainz_data(record) do
MusicLibrary.Records.notify_update(updated_record)
with {:ok, updated_record} <- Records.refresh_musicbrainz_data(record) do
Records.notify_update(updated_record)
end
end
end
+5 -3
View File
@@ -1,13 +1,15 @@
defmodule MusicLibrary.Worker.RefreshCover do
use Oban.Worker, queue: :heavy_writes, max_attempts: 3
alias MusicLibrary.Records
@impl Oban.Worker
def perform(%Oban.Job{args: %{"id" => record_id}}) do
record = MusicLibrary.Records.get_record!(record_id)
record = Records.get_record!(record_id)
case MusicLibrary.Records.refresh_cover(record) do
case Records.refresh_cover(record) do
{:ok, updated_record} ->
MusicLibrary.Records.notify_update(updated_record)
Records.notify_update(updated_record)
{:error, :cover_not_available} ->
{:cancel, :cover_not_available}