-module(rocksky@scrobble).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/scrobble.gleam").
-export([get_scrobble/1, get_scrobbles/0, with_did/2, with_following/2, new_scrobble/2, with_album/2, with_duration_ms/2, with_mb_id/2, with_isrc/2, with_album_art/2, with_track_number/2, with_release_date/2, with_year/2, with_disc_number/2, with_lyrics/2, with_composer/2, with_copyright_message/2, with_label/2, with_artist_picture/2, with_spotify_link/2, with_lastfm_link/2, with_tidal_link/2, with_apple_music_link/2, with_youtube_link/2, with_deezer_link/2, with_timestamp/2, create/1]).
-export_type([new_scrobble/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.scrobble.*` — record listens and read them back.\n").
-type new_scrobble() :: {new_scrobble,
binary(),
binary(),
gleam@option:option(binary()),
gleam@option:option(integer()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(integer()),
gleam@option:option(binary()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(integer())}.
-file("src/rocksky/scrobble.gleam", 12).
?DOC(" `app.rocksky.scrobble.getScrobble` — fetch a single scrobble by AT-URI.\n").
-spec get_scrobble(binary()) -> rocksky:request(rocksky@generated@types:scrobble_view_basic()).
get_scrobble(Uri) ->
_pipe = rocksky:'query'(
<<"app.rocksky.scrobble.getScrobble"/utf8>>,
rocksky@decoders:scrobble()
),
rocksky:param(_pipe, <<"uri"/utf8>>, Uri).
-file("src/rocksky/scrobble.gleam", 19).
?DOC(
" `app.rocksky.scrobble.getScrobbles` — paginated scrobble feed. Refine\n"
" with `rocksky.limit`, `rocksky.offset`, `with_did`, `with_following`.\n"
).
-spec get_scrobbles() -> rocksky:request(gleam@dynamic:dynamic_()).
get_scrobbles() ->
rocksky:'query'(
<<"app.rocksky.scrobble.getScrobbles"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_dynamic/1}
).
-file("src/rocksky/scrobble.gleam", 23).
-spec with_did(rocksky:request(HGE), binary()) -> rocksky:request(HGE).
with_did(Req, Did) ->
rocksky:param(Req, <<"did"/utf8>>, Did).
-file("src/rocksky/scrobble.gleam", 27).
-spec with_following(rocksky:request(HGH), boolean()) -> rocksky:request(HGH).
with_following(Req, Following) ->
rocksky:bool_param(Req, <<"following"/utf8>>, Following).
-file("src/rocksky/scrobble.gleam", 67).
-spec new_scrobble(binary(), binary()) -> new_scrobble().
new_scrobble(Title, Artist) ->
{new_scrobble,
Title,
Artist,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none}.
-file("src/rocksky/scrobble.gleam", 95).
-spec with_album(new_scrobble(), binary()) -> new_scrobble().
with_album(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
{some, V},
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 99).
-spec with_duration_ms(new_scrobble(), integer()) -> new_scrobble().
with_duration_ms(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
{some, V},
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 103).
-spec with_mb_id(new_scrobble(), binary()) -> new_scrobble().
with_mb_id(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
{some, V},
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 107).
-spec with_isrc(new_scrobble(), binary()) -> new_scrobble().
with_isrc(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
{some, V},
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 111).
-spec with_album_art(new_scrobble(), binary()) -> new_scrobble().
with_album_art(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
{some, V},
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 115).
-spec with_track_number(new_scrobble(), integer()) -> new_scrobble().
with_track_number(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
{some, V},
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 119).
-spec with_release_date(new_scrobble(), binary()) -> new_scrobble().
with_release_date(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
{some, V},
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 123).
-spec with_year(new_scrobble(), integer()) -> new_scrobble().
with_year(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
{some, V},
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 127).
-spec with_disc_number(new_scrobble(), integer()) -> new_scrobble().
with_disc_number(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
{some, V},
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 131).
-spec with_lyrics(new_scrobble(), binary()) -> new_scrobble().
with_lyrics(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
{some, V},
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 135).
-spec with_composer(new_scrobble(), binary()) -> new_scrobble().
with_composer(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
{some, V},
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 139).
-spec with_copyright_message(new_scrobble(), binary()) -> new_scrobble().
with_copyright_message(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
{some, V},
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 143).
-spec with_label(new_scrobble(), binary()) -> new_scrobble().
with_label(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
{some, V},
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 147).
-spec with_artist_picture(new_scrobble(), binary()) -> new_scrobble().
with_artist_picture(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
{some, V},
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 151).
-spec with_spotify_link(new_scrobble(), binary()) -> new_scrobble().
with_spotify_link(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
{some, V},
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 155).
-spec with_lastfm_link(new_scrobble(), binary()) -> new_scrobble().
with_lastfm_link(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
{some, V},
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 159).
-spec with_tidal_link(new_scrobble(), binary()) -> new_scrobble().
with_tidal_link(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
{some, V},
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 163).
-spec with_apple_music_link(new_scrobble(), binary()) -> new_scrobble().
with_apple_music_link(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
{some, V},
erlang:element(22, S),
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 167).
-spec with_youtube_link(new_scrobble(), binary()) -> new_scrobble().
with_youtube_link(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
{some, V},
erlang:element(23, S),
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 171).
-spec with_deezer_link(new_scrobble(), binary()) -> new_scrobble().
with_deezer_link(S, V) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
{some, V},
erlang:element(24, S)}.
-file("src/rocksky/scrobble.gleam", 176).
?DOC(" Set the scrobble timestamp in Unix seconds. Omit to default to now (server-side).\n").
-spec with_timestamp(new_scrobble(), integer()) -> new_scrobble().
with_timestamp(S, Unix_seconds) ->
{new_scrobble,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S),
erlang:element(17, S),
erlang:element(18, S),
erlang:element(19, S),
erlang:element(20, S),
erlang:element(21, S),
erlang:element(22, S),
erlang:element(23, S),
{some, Unix_seconds}}.
-file("src/rocksky/scrobble.gleam", 237).
-spec opt_int(
list({binary(), gleam@json:json()}),
binary(),
gleam@option:option(integer())
) -> list({binary(), gleam@json:json()}).
opt_int(Fields, Key, Value) ->
case Value of
{some, V} ->
[{Key, gleam@json:int(V)} | Fields];
none ->
Fields
end.
-file("src/rocksky/scrobble.gleam", 226).
-spec opt_string(
list({binary(), gleam@json:json()}),
binary(),
gleam@option:option(binary())
) -> list({binary(), gleam@json:json()}).
opt_string(Fields, Key, Value) ->
case Value of
{some, V} ->
[{Key, gleam@json:string(V)} | Fields];
none ->
Fields
end.
-file("src/rocksky/scrobble.gleam", 196).
-spec to_json(new_scrobble()) -> gleam@json:json().
to_json(S) ->
gleam@json:object(
begin
_pipe = [{<<"title"/utf8>>, gleam@json:string(erlang:element(2, S))},
{<<"artist"/utf8>>, gleam@json:string(erlang:element(3, S))}],
_pipe@1 = opt_string(_pipe, <<"album"/utf8>>, erlang:element(4, S)),
_pipe@2 = opt_int(
_pipe@1,
<<"duration"/utf8>>,
erlang:element(5, S)
),
_pipe@3 = opt_string(_pipe@2, <<"mbId"/utf8>>, erlang:element(6, S)),
_pipe@4 = opt_string(_pipe@3, <<"isrc"/utf8>>, erlang:element(7, S)),
_pipe@5 = opt_string(
_pipe@4,
<<"albumArt"/utf8>>,
erlang:element(8, S)
),
_pipe@6 = opt_int(
_pipe@5,
<<"trackNumber"/utf8>>,
erlang:element(9, S)
),
_pipe@7 = opt_string(
_pipe@6,
<<"releaseDate"/utf8>>,
erlang:element(10, S)
),
_pipe@8 = opt_int(_pipe@7, <<"year"/utf8>>, erlang:element(11, S)),
_pipe@9 = opt_int(
_pipe@8,
<<"discNumber"/utf8>>,
erlang:element(12, S)
),
_pipe@10 = opt_string(
_pipe@9,
<<"lyrics"/utf8>>,
erlang:element(13, S)
),
_pipe@11 = opt_string(
_pipe@10,
<<"composer"/utf8>>,
erlang:element(14, S)
),
_pipe@12 = opt_string(
_pipe@11,
<<"copyrightMessage"/utf8>>,
erlang:element(15, S)
),
_pipe@13 = opt_string(
_pipe@12,
<<"label"/utf8>>,
erlang:element(16, S)
),
_pipe@14 = opt_string(
_pipe@13,
<<"artistPicture"/utf8>>,
erlang:element(17, S)
),
_pipe@15 = opt_string(
_pipe@14,
<<"spotifyLink"/utf8>>,
erlang:element(18, S)
),
_pipe@16 = opt_string(
_pipe@15,
<<"lastfmLink"/utf8>>,
erlang:element(19, S)
),
_pipe@17 = opt_string(
_pipe@16,
<<"tidalLink"/utf8>>,
erlang:element(20, S)
),
_pipe@18 = opt_string(
_pipe@17,
<<"appleMusicLink"/utf8>>,
erlang:element(21, S)
),
_pipe@19 = opt_string(
_pipe@18,
<<"youtubeLink"/utf8>>,
erlang:element(22, S)
),
_pipe@20 = opt_string(
_pipe@19,
<<"deezerLink"/utf8>>,
erlang:element(23, S)
),
opt_int(_pipe@20, <<"timestamp"/utf8>>, erlang:element(24, S))
end
).
-file("src/rocksky/scrobble.gleam", 188).
?DOC(
" Convert a `NewScrobble` into a `Request(Scrobble)` ready for `rocksky.send`.\n"
" ```gleam\n"
" scrobble.new_scrobble(title: \"Karma Police\", artist: \"Radiohead\")\n"
" |> scrobble.with_album(\"OK Computer\")\n"
" |> scrobble.with_duration_ms(263_000)\n"
" |> scrobble.create\n"
" |> rocksky.send(client)\n"
" ```\n"
).
-spec create(new_scrobble()) -> rocksky:request(rocksky@generated@types:scrobble_view_basic()).
create(S) ->
_pipe = rocksky:procedure(
<<"app.rocksky.scrobble.createScrobble"/utf8>>,
rocksky@decoders:scrobble()
),
rocksky:body(_pipe, to_json(S)).