-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).