Current section
Files
Jump to
Current section
Files
lib/dvkv/boolean_match_spec.ex
defmodule DBKV.BooleanMatchSpec do
@moduledoc false
require Ex2ms
def key_range(min_key, max_key, opts \\ []) do
min_inclusive = Keyword.get(opts, :min_inclusive, true)
max_inclusive = Keyword.get(opts, :max_inclusive, true)
cond do
min_inclusive && max_inclusive ->
Ex2ms.fun do
{k, v} = kv when ^min_key <= k and k <= ^max_key -> true
end
min_inclusive ->
Ex2ms.fun do
{k, v} = kv when ^min_key <= k and k < ^max_key -> true
end
max_inclusive ->
Ex2ms.fun do
{k, v} = kv when ^min_key <= k and k < ^max_key -> true
end
true ->
Ex2ms.fun do
{k, v} = kv when ^min_key < k and k > ^max_key -> true
end
end
end
def value_range(min_value, max_value, opts \\ []) do
min_inclusive = Keyword.get(opts, :min_inclusive, true)
max_inclusive = Keyword.get(opts, :max_inclusive, true)
cond do
min_inclusive && max_inclusive ->
Ex2ms.fun do
{k, v} = kv when ^min_value <= v and v <= ^max_value -> true
end
min_inclusive ->
Ex2ms.fun do
{k, v} = kv when ^min_value <= v and v < ^max_value -> true
end
max_inclusive ->
Ex2ms.fun do
{k, v} = kv when ^min_value < v and v <= ^max_value -> true
end
true ->
Ex2ms.fun do
{k, v} = kv when ^min_value < v and v < ^max_value -> true
end
end
end
def min_key(min_key, inclusive \\ true) do
if inclusive do
Ex2ms.fun do
{k, v} = kv when ^min_key <= k -> true
end
else
Ex2ms.fun do
{k, v} = kv when ^min_key < k -> true
end
end
end
def max_key(max_key, inclusive \\ true) do
if inclusive do
Ex2ms.fun do
{k, v} = kv when k <= ^max_key -> true
end
else
Ex2ms.fun do
{k, v} = kv when k < ^max_key -> true
end
end
end
def min_value(min_value, inclusive \\ true) do
if inclusive do
Ex2ms.fun do
{k, v} = kv when ^min_value <= v -> true
end
else
Ex2ms.fun do
{k, v} = kv when ^min_value < v -> true
end
end
end
def max_value(max_value, inclusive \\ true) do
if inclusive do
Ex2ms.fun do
{k, v} = kv when v <= ^max_value -> true
end
else
Ex2ms.fun do
{k, v} = kv when v < ^max_value -> true
end
end
end
end