Extend Last.fm Feed album/artist functions
This commit is contained in:
+6
-6
@@ -41,26 +41,26 @@ defmodule LastFm.Feed do
|
|||||||
def all_artists do
|
def all_artists do
|
||||||
m = [
|
m = [
|
||||||
{
|
{
|
||||||
{:"$1", %{artist: :"$2"}},
|
{:"$1", %{scrobbled_at_label: :"$2", artist: :"$3"}},
|
||||||
[],
|
[],
|
||||||
[:"$2"]
|
[%{scrobbled_at_uts: :"$1", scrobbled_at_label: :"$2", artist: :"$3"}]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
:ets.select_reverse(__MODULE__, m) |> Enum.uniq()
|
:ets.select_reverse(__MODULE__, m) |> Enum.uniq_by(fn pair -> pair.artist end)
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec all_albums() :: [LastFm.Album.t()]
|
@spec all_albums() :: [LastFm.Album.t()]
|
||||||
def all_albums do
|
def all_albums do
|
||||||
m = [
|
m = [
|
||||||
{
|
{
|
||||||
{:"$1", %{album: :"$2"}},
|
{:"$1", %{scrobbled_at_label: :"$2", album: :"$3", cover_url: :"$4"}},
|
||||||
[],
|
[],
|
||||||
[:"$2"]
|
[%{scrobbled_at_uts: :"$1", scrobbled_at_label: :"$2", album: :"$3", cover_url: :"$4"}]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
:ets.select_reverse(__MODULE__, m) |> Enum.uniq()
|
:ets.select_reverse(__MODULE__, m) |> Enum.uniq_by(fn pair -> pair.album end)
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec subscribe() :: :ok
|
@spec subscribe() :: :ok
|
||||||
|
|||||||
@@ -49,12 +49,28 @@ defmodule LastFm.FeedTest do
|
|||||||
|
|
||||||
test "it returns artists in descending order of scrobble" do
|
test "it returns artists in descending order of scrobble" do
|
||||||
:ok = Feed.update([@track_two, @track_one])
|
:ok = Feed.update([@track_two, @track_one])
|
||||||
assert [@track_one.artist] == Feed.all_artists()
|
|
||||||
|
assert [
|
||||||
|
%{
|
||||||
|
artist: @track_two.artist,
|
||||||
|
scrobbled_at_uts: @track_two.scrobbled_at_uts,
|
||||||
|
scrobbled_at_label: @track_two.scrobbled_at_label
|
||||||
|
}
|
||||||
|
] ==
|
||||||
|
Feed.all_artists()
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it returns albums in descending order of scrobble" do
|
test "it returns albums in descending order of scrobble" do
|
||||||
:ok = Feed.update([@track_two, @track_one])
|
:ok = Feed.update([@track_two, @track_one])
|
||||||
assert [@track_one.album] == Feed.all_albums()
|
|
||||||
|
assert [
|
||||||
|
%{
|
||||||
|
album: @track_two.album,
|
||||||
|
cover_url: @track_two.cover_url,
|
||||||
|
scrobbled_at_uts: @track_two.scrobbled_at_uts,
|
||||||
|
scrobbled_at_label: @track_two.scrobbled_at_label
|
||||||
|
}
|
||||||
|
] == Feed.all_albums()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user