% 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.

-module(global_changes_util).


-export([get_dbname/0]).


get_dbname() ->
    case application:get_env(global_changes, dbname) of
        {ok, DbName} when is_binary(DbName) ->
            DbName;
        {ok, DbName} when is_list(DbName) ->
            iolist_to_binary(DbName);
        _ ->
            <<"_global_changes">>
    end.
