Split ScrobbleActivity into focused modules

Move track CRUD/listing to ListeningStats and diagnostics
to Maintenance, leaving ScrobbleActivity for scrobbling only.

Closes #111
This commit is contained in:
Claudio Ortolina
2026-03-12 16:51:33 +00:00
parent ee4d2555ee
commit d057f29ba1
13 changed files with 710 additions and 728 deletions
@@ -2,7 +2,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Form do
use MusicLibraryWeb, :live_component
alias LastFm.Track
alias MusicLibrary.ScrobbleActivity
alias MusicLibrary.ListeningStats
@impl true
def render(assigns) do
@@ -104,7 +104,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Form do
end
defp save_track(socket, track_params) do
case ScrobbleActivity.update_track(socket.assigns.track, track_params) do
case ListeningStats.update_track(socket.assigns.track, track_params) do
{:ok, track} ->
notify_parent({:saved, track})
@@ -7,7 +7,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do
alias LastFm.Track
alias MusicLibrary.Assets.Transform
alias MusicLibrary.ScrobbleActivity
alias MusicLibrary.ListeningStats
@default_tracks_list_params %{
query: "",
@@ -229,7 +229,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do
end
defp apply_action(socket, :edit, %{"scrobbled_at_uts" => id} = params) do
track = ScrobbleActivity.get_track!(id)
track = ListeningStats.get_track!(id)
socket
|> apply_fallback_index(params, :tracks, &apply_action/3)
@@ -241,7 +241,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do
defp apply_action(socket, :index, params) do
query = params["query"] || ""
order = parse_order(params["order"] || "scrobbled_at")
total_tracks = ScrobbleActivity.search_tracks_count(query)
total_tracks = ListeningStats.search_tracks_count(query)
track_list_params =
@default_tracks_list_params
@@ -267,8 +267,8 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do
@impl true
def handle_event("delete", %{"scrobbled-at-uts" => scrobbled_at_uts}, socket) do
track = ScrobbleActivity.get_track!(scrobbled_at_uts)
{:ok, _} = ScrobbleActivity.delete_track(track)
track = ListeningStats.get_track!(scrobbled_at_uts)
{:ok, _} = ListeningStats.delete_track(track)
{:noreply, stream_delete(socket, :tracks, %{track: track})}
end
@@ -294,7 +294,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do
defp parse_order(_), do: :scrobbled_at
defp load_and_assign_tracks(socket, track_list_params) do
tracks = ScrobbleActivity.list_tracks(track_list_params)
tracks = ListeningStats.list_tracks(track_list_params)
tracks_empty? = tracks == []
socket