Current section

Files

Jump to
eetcd_fork src eetcd_compare.erl
Raw

src/eetcd_compare.erl

-module(eetcd_compare).
-export([new/1, with_range_end/2]).
-export([value/3, version/3,
mod_revision/3, create_revision/3,
lease/3]).
new(Key) -> #{key => Key}.
%% WithRange sets the comparison to scan the range [key, end).
with_range_end(Cmp, End) -> Cmp#{range_end => End}.
value(Cmp, Result, Value) ->
maps:merge(Cmp,
#{
result => to_result(Result),
target => 'VALUE',
target_union => {value, Value}
}).
version(Cmp, Result, Version) ->
maps:merge(Cmp,
#{
result => to_result(Result),
target => 'VERSION',
target_union => {version, Version}
}).
mod_revision(Cmp, Result, Version) ->
maps:merge(Cmp,
#{
result => to_result(Result),
target => 'MOD',
target_union => {mod_revision, Version}
}).
create_revision(Cmp, Result, Version) ->
maps:merge(Cmp,
#{
result => to_result(Result),
target => 'CREATE',
target_union => {create_revision, Version}
}).
lease(Cmp, Result, Version) ->
maps:merge(Cmp,
#{
result => to_result(Result),
target => 'LEASE',
target_union => {lease, Version}
}).
to_result("=") -> 'EQUAL';
to_result("==") -> 'EQUAL';
to_result("!=") -> 'NOT_EQUAL';
to_result("=/=") -> 'NOT_EQUAL';
to_result(">") -> 'GREATER';
to_result("<") -> 'LESS'.