Current section
Files
Jump to
Current section
Files
src/edb_server_maps.erl
%% Copyright (c) Meta Platforms, Inc. and affiliates.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%% % @format
-module(edb_server_maps).
-compile(warn_missing_spec_all).
%% erlfmt:ignore
% @fb-only
-moduledoc false.
%% Public API
-export([add/3, add/4, add/5, add/6]).
-spec add(Key, Value, Map) -> Map when
Map :: #{Key => Value}.
add(Key, Value, Map) ->
Map#{Key => Value}.
-spec add(Key1, Key2, Value, Map) -> Map when
Map :: #{Key1 => #{Key2 => Value}}.
add(Key1, Key2, Value, Map) ->
maps:update_with(
Key1,
fun(Map1) -> add(Key2, Value, Map1) end,
#{Key2 => Value},
Map
).
-spec add(Key1, Key2, Key3, Value, Map) -> Map when
Map :: #{Key1 => #{Key2 => #{Key3 => Value}}}.
add(Key1, Key2, Key3, Value, Map) ->
maps:update_with(
Key1,
fun(Map1) -> add(Key2, Key3, Value, Map1) end,
#{Key2 => #{Key3 => Value}},
Map
).
-spec add(Key1, Key2, Key3, Key4, Value, Map) -> Map when
Map :: #{Key1 => #{Key2 => #{Key3 => #{Key4 => Value}}}}.
add(Key1, Key2, Key3, Key4, Value, Map) ->
maps:update_with(
Key1,
fun(Map1) -> add(Key2, Key3, Key4, Value, Map1) end,
#{Key2 => #{Key3 => #{Key4 => Value}}},
Map
).