Packages

Typed route definitions for seamless fullstack development !

Current section

Files

Jump to
gleatter src gleatter@query.erl
Raw

src/gleatter@query.erl

-module(gleatter@query).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([empty_query/0, complex_query/1, encode/2, decode/2, get_type/1]).
-export_type([query_type/0, query_converter/1, route_query/1]).
-type query_type() :: empty_query | complex_query.
-type query_converter(IMO) :: {query_converter,
fun((IMO) -> list({binary(), binary()})),
fun((list({binary(), binary()})) -> {ok, IMO} | {error, nil})}.
-opaque route_query(IMP) :: {route_query, query_type(), query_converter(IMP)}.
-file("/home/runner/work/gleatter/gleatter/src/gleatter/query.gleam", 23).
-spec empty_query() -> route_query(nil).
empty_query() ->
{route_query,
empty_query,
{query_converter, fun(_) -> [] end, fun(_) -> {ok, nil} end}}.
-file("/home/runner/work/gleatter/gleatter/src/gleatter/query.gleam", 35).
-spec complex_query(query_converter(IMR)) -> route_query(IMR).
complex_query(Converter) ->
{route_query, complex_query, Converter}.
-file("/home/runner/work/gleatter/gleatter/src/gleatter/query.gleam", 40).
-spec encode(route_query(IMU), IMU) -> list({binary(), binary()}).
encode(Query, Value) ->
_pipe = Value,
(erlang:element(2, erlang:element(3, Query)))(_pipe).
-file("/home/runner/work/gleatter/gleatter/src/gleatter/query.gleam", 45).
-spec decode(route_query(IMX), list({binary(), binary()})) -> {ok, IMX} |
{error, nil}.
decode(Query, Value) ->
_pipe = Value,
(erlang:element(3, erlang:element(3, Query)))(_pipe).
-file("/home/runner/work/gleatter/gleatter/src/gleatter/query.gleam", 53).
-spec get_type(route_query(any())) -> query_type().
get_type(Query) ->
erlang:element(2, Query).