% TODO: Decide if validation is to be done here. Do so if yes.
List.
--spec validate_unique_presence(t(K, _V), [K]) ->
- hope_result:t(ok, [presence_error(K)]).
+-spec validate_unique_presence(T, [K]) ->
+ hope_result:t(T, [presence_error(K)])
+ when T :: t(K, _V).
validate_unique_presence(T, KeysRequired) ->
KeysOptional = [],
validate_unique_presence(T, KeysRequired, KeysOptional).
-spec validate_unique_presence(t(K, _V), [K], [K]) ->
- hope_result:t(ok, [presence_error(K)]).
+ hope_result:t(T, [presence_error(K)])
+ when T :: t(K, _V).
validate_unique_presence(T, KeysRequired, KeysOptional) ->
case find_unique_presence_violations(T, KeysRequired, KeysOptional)
of #hope_kv_list_presence_violations
, keys_duplicated = []
, keys_unsupported = []
} ->
- {ok, ok}
+ {ok, T}
; #hope_kv_list_presence_violations{}=Violations ->
{error, presence_violations_to_list(Violations)}
end.
DictDups = [{a, 1}, {b, 2}, {c, 3}, {a, 4}],
DictMissing = [{a, 1}, {b, 2}],
- {ok, ok} =
+ {ok, DictOk} =
hope_kv_list:validate_unique_presence(DictOk, KeysRequired),
#hope_kv_list_presence_violations
{ keys_missing = []