defmodule Momento.Validation do
import Momento.Error
@spec validate_cache_name(cache_name :: String.t()) :: :ok | {:error, Momento.Error.t()}
def validate_cache_name(cache_name) do
validate_string(cache_name, "cache name")
end
@spec validate_sorted_set_name(sorted_set_name :: String.t()) ::
:ok | {:error, Momento.Error.t()}
def validate_sorted_set_name(sorted_set_name) do
validate_string(sorted_set_name, "sorted set name")
end
@spec validate_string(string :: String.t(), name_type :: String.t()) ::
:ok | {:error, Momento.Error.t()}
defp validate_string(nil, string_name),
do: {:error, invalid_argument("The #{string_name} cannot be nil")}
defp validate_string(string, string_name) do
with true <- is_binary(string),
String.valid?(string) do
:ok
else
_ -> {:error, invalid_argument("The #{string_name} must be a string")}
end
end
end