Current section
Files
Jump to
Current section
Files
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/4, procedure_call/4]).
-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, JIU) :: {procedure_client,
fun((procedure(JIR, JIS), JIR, fun(({ok, JIS} |
{error, gleam_rpc_error(JIT)}) -> JIU)) -> JIU)}.
-type procedure_call(JIV, JIW, JIX, JIY) :: {procedure_call,
procedure(JIV, JIW),
procedure_client(JIV, JIW, JIX, JIY)}.
-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(JJJ, JJG), convert:converter(JJJ)) -> procedure(JJJ, JJG).
params(Procedure, Params_converter) ->
erlang:setelement(5, Procedure, Params_converter).
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 64).
-spec returns(procedure(JJN, JJR), convert:converter(JJR)) -> procedure(JJN, JJR).
returns(Procedure, Return_converter) ->
erlang:setelement(6, Procedure, Return_converter).
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 71).
-spec with_client(procedure(JJV, JJW), procedure_client(JJV, JJW, JJZ, JKA)) -> procedure_call(JJV, JJW, JJZ, JKA).
with_client(Procedure, Server) ->
{procedure_call, Procedure, Server}.
-file("/home/runner/work/gleamrpc/gleamrpc/src/gleamrpc.gleam", 78).
-spec call(
procedure_call(JKJ, JKK, JKL, JKM),
JKJ,
fun(({ok, JKK} | {error, gleam_rpc_error(JKL)}) -> JKM)
) -> JKM.
call(Procedure_call, Params, Callback) ->
(erlang:element(2, erlang:element(3, Procedure_call)))(
erlang:element(2, Procedure_call),
Params,
Callback
).