Packages

Gleam Redis client

Retired package: Release invalid - Broken pending fix

Current section

Files

Jump to
gledis src gledis.erl
Raw

src/gledis.erl

-module(gledis).
-compile(no_auto_import).
-export([null/0, bool/1, int/1, float/1, string/1, bytea/1, dynamic/1, connect/0, close/1, 'query'/2]).
-export_type([argument/0, 'query'/0, client/0]).
-type argument() :: any().
-type 'query'() :: {keys, binary()} |
{get, binary()} |
{set, binary(), argument()} |
{del, binary()} |
{exists, binary()} |
random_key |
{custom, binary(), list(argument())}.
-type client() :: any().
-spec null() -> argument().
null() ->
gledis_ffi:null().
-spec bool(boolean()) -> argument().
bool(Field@0) ->
gledis_ffi:coerce(Field@0).
-spec int(integer()) -> argument().
int(Field@0) ->
gledis_ffi:coerce(Field@0).
-spec float(float()) -> argument().
float(Field@0) ->
gledis_ffi:coerce(Field@0).
-spec string(binary()) -> argument().
string(Field@0) ->
gledis_ffi:coerce(Field@0).
-spec bytea(bitstring()) -> argument().
bytea(Field@0) ->
gledis_ffi:coerce(Field@0).
-spec dynamic(gleam@dynamic:dynamic()) -> argument().
dynamic(Field@0) ->
gledis_ffi:coerce(Field@0).
-spec build_query('query'()) -> list(gleam@dynamic:dynamic()).
build_query(Query) ->
case Query of
{get, Key} ->
[gleam@dynamic:from(<<"GET"/utf8>>), gleam@dynamic:from(Key)];
{set, Key@1, Value} ->
[gleam@dynamic:from(<<"SET"/utf8>>),
gleam@dynamic:from(Key@1),
gleam@dynamic:from(Value)];
{del, Key@2} ->
[gleam@dynamic:from(<<"DEL"/utf8>>), gleam@dynamic:from(Key@2)];
{exists, Key@3} ->
[gleam@dynamic:from(<<"EXISTS"/utf8>>), gleam@dynamic:from(Key@3)];
{keys, Pattern} ->
[gleam@dynamic:from(<<"KEYS"/utf8>>), gleam@dynamic:from(Pattern)];
random_key ->
[gleam@dynamic:from(<<"RANDOMKEY"/utf8>>)];
{custom, Command, Args} ->
[gleam@dynamic:from(Command) |
gleam@list:map(Args, fun gleam@dynamic:from/1)]
end.
-spec connect() -> client().
connect() ->
gledis_ffi:connect().
-spec close(client()) -> nil.
close(Field@0) ->
gledis_ffi:close(Field@0).
-spec 'query'(client(), 'query'()) -> {ok, any()} | {error, binary()}.
'query'(Client, Query) ->
gledis_ffi:'query'(Client, build_query(Query)).