1:- module(bc_api_config, []).

HTTP handlers for config entry management */

    5:- use_module(library(arouter)).    6:- use_module(library(dict_schema)).    7
    8:- use_module(bc_view).    9:- use_module(bc_api_io).   10:- use_module(bc_api_auth).   11:- use_module(bc_api_actor).   12:- use_module(bc_data_config).   13
   14% Gets config values.
   15
   16:- route_get(api/configs,
   17    bc_auth, config_list).   18
   19config_list:-
   20    bc_actor(Actor),
   21    bc_config_list(Actor, List),
   22    bc_reply_success(List).
   23
   24% Updates the config value.
   25
   26:- route_put(api/config,
   27    bc_auth, config_update).   28
   29config_update:-
   30    bc_actor(Actor),
   31    bc_read_by_schema(bc_config, Config),
   32    Name = Config.name,
   33    Value = Config.value,
   34    bc_config_set_api(Actor, Name, Value),
   35    bc_view_purge_cache,
   36    bc_reply_success(Name).
   37
   38% Updates the list of config values.
   39
   40:- route_put(api/configs,
   41    bc_auth, config_update_list).   42
   43config_update_list:-
   44    bc_actor(Actor),
   45    bc_read_by_schema(bc_config_list, List),
   46    bc_config_set_list_api(Actor, List),
   47    bc_view_purge_cache,
   48    bc_reply_success(true).
   49
   50% Generic config entry.
   51
   52:- register_schema(bc_config, _{
   53    type: dict,
   54    tag: config,
   55    keys: _{
   56        name: atom,
   57        value: [ atom, number ]
   58    }
   59}).   60
   61:- register_schema(bc_config_list, _{
   62    type: list,
   63    items: bc_config
   64}).