Current section

Files

Jump to
gleamrpc src gleamrpc.erl
Raw

src/gleamrpc.erl

-module(gleamrpc).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export(['query'/2, mutation/2, params/2, returns/2, with_client/2, call/3]).
-export_type([procedure_type/0, procedure/2, gleam_rpc_error/1, router/0, procedure_client/3, procedure_call/3]).
-type procedure_type() :: 'query' | mutation.
-type procedure(JIO, JIP) :: {procedure,
binary(),
gleam@option:option(router()),
procedure_type(),
convert:converter(JIO),
convert:converter(JIP)}.
-type gleam_rpc_error(JIQ) :: {gleam_rpc_error, JIQ}.
-type router() :: {router, binary(), gleam@option:option(router())}.
-type procedure_client(JIR, JIS, JIT) :: {procedure_client,
fun((procedure(JIR, JIS), JIR, fun(({ok, JIS} |
{error, gleam_rpc_error(JIT)}) -> nil)) -> nil)}.
-type procedure_call(JIU, JIV, JIW) :: {procedure_call,
procedure(JIU, JIV),
procedure_client(JIU, JIV, JIW)}.
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 46).
-spec 'query'(binary(), gleam@option:option(router())) -> procedure(nil, nil).
'query'(Name, Router) ->
{procedure, Name, Router, 'query', convert:null(), convert:null()}.
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 50).
-spec mutation(binary(), gleam@option:option(router())) -> procedure(nil, nil).
mutation(Name, Router) ->
{procedure, Name, Router, mutation, convert:null(), convert:null()}.
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 57).
-spec params(procedure(JJH, JJE), convert:converter(JJH)) -> procedure(JJH, JJE).
params(Procedure, Params_converter) ->
erlang:setelement(5, Procedure, Params_converter).
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 64).
-spec returns(procedure(JJL, JJP), convert:converter(JJP)) -> procedure(JJL, JJP).
returns(Procedure, Return_converter) ->
erlang:setelement(6, Procedure, Return_converter).
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 71).
-spec with_client(procedure(JJT, JJU), procedure_client(JJT, JJU, JJX)) -> procedure_call(JJT, JJU, JJX).
with_client(Procedure, Server) ->
{procedure_call, Procedure, Server}.
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 78).
-spec call(
procedure_call(JKE, JKF, JKG),
JKE,
fun(({ok, JKF} | {error, gleam_rpc_error(JKG)}) -> nil)
) -> nil.
call(Procedure_call, Params, Callback) ->
(erlang:element(2, erlang:element(3, Procedure_call)))(
erlang:element(2, Procedure_call),
Params,
Callback
).