Skip to main content

src/rocksky@artist.erl

-module(rocksky@artist).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/artist.gleam").
-export([get_artist/1, get_artists/0, with_names/2, get_artist_albums/1, get_artist_tracks/1, get_artist_listeners/1, get_artist_recent_listeners/1]).

-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.artist.*` — artist catalogue.\n").

-file("src/rocksky/artist.gleam", 10).
?DOC(" `app.rocksky.artist.getArtist` — fetch an artist by AT-URI.\n").
-spec get_artist(binary()) -> rocksky:request(rocksky@generated@types:artist_view_basic()).
get_artist(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.artist.getArtist"/utf8>>,
        rocksky@decoders:artist()
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/artist.gleam", 18).
?DOC(
    " `app.rocksky.artist.getArtists` — paginated artist list.\n"
    " Use `rocksky.limit`, `rocksky.offset`, `rocksky.genre`, or\n"
    " `with_names` to refine.\n"
).
-spec get_artists() -> rocksky:request(list(rocksky@generated@types:artist_view_basic())).
get_artists() ->
    rocksky:'query'(
        <<"app.rocksky.artist.getArtists"/utf8>>,
        rocksky@decoders:unwrap(<<"artists"/utf8>>, rocksky@decoders:artist())
    ).

-file("src/rocksky/artist.gleam", 26).
?DOC(" Filter `get_artists` by a comma-separated `names` parameter.\n").
-spec with_names(rocksky:request(HPZ), binary()) -> rocksky:request(HPZ).
with_names(Req, Names) ->
    rocksky:param(Req, <<"names"/utf8>>, Names).

-file("src/rocksky/artist.gleam", 31).
?DOC(" `app.rocksky.artist.getArtistAlbums` — albums for an artist.\n").
-spec get_artist_albums(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_artist_albums(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.artist.getArtistAlbums"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/artist.gleam", 37).
?DOC(" `app.rocksky.artist.getArtistTracks` — tracks for an artist.\n").
-spec get_artist_tracks(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_artist_tracks(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.artist.getArtistTracks"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/artist.gleam", 43).
?DOC(" `app.rocksky.artist.getArtistListeners` — top listeners for an artist.\n").
-spec get_artist_listeners(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_artist_listeners(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.artist.getArtistListeners"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).

-file("src/rocksky/artist.gleam", 49).
?DOC(" `app.rocksky.artist.getArtistRecentListeners` — recent listeners.\n").
-spec get_artist_recent_listeners(binary()) -> rocksky:request(list(rocksky@generated@types:song_recent_listener_view())).
get_artist_recent_listeners(Uri) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.artist.getArtistRecentListeners"/utf8>>,
        rocksky@decoders:unwrap(
            <<"listeners"/utf8>>,
            rocksky@decoders:listener()
        )
    ),
    rocksky:param(_pipe, <<"uri"/utf8>>, Uri).