Skip to main content

src/rocksky@charts.erl

-module(rocksky@charts).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/charts.gleam").
-export([get_scrobbles_chart/0, with_did/2, with_artist_uri/2, with_album_uri/2, with_song_uri/2, with_from/2, with_to/2, get_top_artists/0, get_top_tracks/0]).

-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.

?MODULEDOC(" `app.rocksky.charts.*` — leaderboards and chart data.\n").

-file("src/rocksky/charts.gleam", 12).
?DOC(
    " `app.rocksky.charts.getScrobblesChart` — flexible chart endpoint.\n"
    " Refine with `with_did`, `with_artist_uri`, `with_album_uri`,\n"
    " `with_song_uri`, `rocksky.genre`, `with_from`, `with_to`.\n"
).
-spec get_scrobbles_chart() -> rocksky:request(gleam@dynamic:dynamic_()).
get_scrobbles_chart() ->
    rocksky:'query'(
        <<"app.rocksky.charts.getScrobblesChart"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ).

-file("src/rocksky/charts.gleam", 16).
-spec with_did(rocksky:request(HQX), binary()) -> rocksky:request(HQX).
with_did(Req, Did) ->
    rocksky:param(Req, <<"did"/utf8>>, Did).

-file("src/rocksky/charts.gleam", 20).
-spec with_artist_uri(rocksky:request(HRA), binary()) -> rocksky:request(HRA).
with_artist_uri(Req, Uri) ->
    rocksky:param(Req, <<"artisturi"/utf8>>, Uri).

-file("src/rocksky/charts.gleam", 24).
-spec with_album_uri(rocksky:request(HRD), binary()) -> rocksky:request(HRD).
with_album_uri(Req, Uri) ->
    rocksky:param(Req, <<"albumuri"/utf8>>, Uri).

-file("src/rocksky/charts.gleam", 28).
-spec with_song_uri(rocksky:request(HRG), binary()) -> rocksky:request(HRG).
with_song_uri(Req, Uri) ->
    rocksky:param(Req, <<"songuri"/utf8>>, Uri).

-file("src/rocksky/charts.gleam", 32).
-spec with_from(rocksky:request(HRJ), binary()) -> rocksky:request(HRJ).
with_from(Req, Date) ->
    rocksky:param(Req, <<"from"/utf8>>, Date).

-file("src/rocksky/charts.gleam", 36).
-spec with_to(rocksky:request(HRM), binary()) -> rocksky:request(HRM).
with_to(Req, Date) ->
    rocksky:param(Req, <<"to"/utf8>>, Date).

-file("src/rocksky/charts.gleam", 41).
?DOC(" `app.rocksky.charts.getTopArtists` — top artists in a time window.\n").
-spec get_top_artists() -> rocksky:request(list(rocksky@generated@types:artist_view_basic())).
get_top_artists() ->
    rocksky:'query'(
        <<"app.rocksky.charts.getTopArtists"/utf8>>,
        rocksky@decoders:unwrap(<<"artists"/utf8>>, rocksky@decoders:artist())
    ).

-file("src/rocksky/charts.gleam", 49).
?DOC(" `app.rocksky.charts.getTopTracks` — top tracks in a time window.\n").
-spec get_top_tracks() -> rocksky:request(list(rocksky@generated@types:song_view_basic())).
get_top_tracks() ->
    rocksky:'query'(
        <<"app.rocksky.charts.getTopTracks"/utf8>>,
        rocksky@decoders:unwrap(<<"tracks"/utf8>>, rocksky@decoders:song())
    ).