Skip to main content

src/rocksky@graph.erl

-module(rocksky@graph).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/rocksky/graph.gleam").
-export([follow/1, unfollow/1, get_followers/1, get_follows/1, get_known_followers/1, with_dids/2]).

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

-file("src/rocksky/graph.gleam", 8).
?DOC(" `app.rocksky.graph.followAccount` — follow an actor (`did` or handle).\n").
-spec follow(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
follow(Account) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.graph.followAccount"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"account"/utf8>>, Account).

-file("src/rocksky/graph.gleam", 14).
?DOC(" `app.rocksky.graph.unfollowAccount` — unfollow an actor.\n").
-spec unfollow(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
unfollow(Account) ->
    _pipe = rocksky:procedure(
        <<"app.rocksky.graph.unfollowAccount"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"account"/utf8>>, Account).

-file("src/rocksky/graph.gleam", 21).
?DOC(
    " `app.rocksky.graph.getFollowers` — list followers of `actor`. Refine with\n"
    " `with_dids`, `rocksky.limit`, `rocksky.cursor`.\n"
).
-spec get_followers(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_followers(Actor) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.graph.getFollowers"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"actor"/utf8>>, Actor).

-file("src/rocksky/graph.gleam", 27).
?DOC(" `app.rocksky.graph.getFollows` — list accounts `actor` follows.\n").
-spec get_follows(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_follows(Actor) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.graph.getFollows"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"actor"/utf8>>, Actor).

-file("src/rocksky/graph.gleam", 33).
?DOC(" `app.rocksky.graph.getKnownFollowers` — followers known to the viewer.\n").
-spec get_known_followers(binary()) -> rocksky:request(gleam@dynamic:dynamic_()).
get_known_followers(Actor) ->
    _pipe = rocksky:'query'(
        <<"app.rocksky.graph.getKnownFollowers"/utf8>>,
        {decoder, fun gleam@dynamic@decode:decode_dynamic/1}
    ),
    rocksky:param(_pipe, <<"actor"/utf8>>, Actor).

-file("src/rocksky/graph.gleam", 39).
?DOC(" Filter the result to a specific set of DIDs (server-side).\n").
-spec with_dids(rocksky:request(HTN), list(binary())) -> rocksky:request(HTN).
with_dids(Req, Dids) ->
    rocksky:repeated_param(Req, <<"dids"/utf8>>, Dids).