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

{application, couch, [
    {description, "Apache CouchDB"},
    {vsn, "3.5.2"},
    {registered, [
        couch_db_update,
        couch_db_update_notifier_sup,
        couch_httpd,
        couch_primary_services,
        couch_proc_manager,
        couch_secondary_services,
        couch_server,
        couch_sup,
        couch_task_status
    ]},
    {mod, {couch_app, []}},
    {applications, [
        % stdlib
        kernel,
        stdlib,
        crypto,
        sasl,
        inets,
        ssl,
        os_mon,

        % Upstream deps
        ibrowse,
        mochiweb,

        % ASF deps
        couch_epi,
        exxhash,
        config,
        b64url,
        couch_log,
        couch_event,
        ioq,
        couch_stats,
        couch_dist,
        couch_quickjs
    ]},
    {env, [
        {httpd_global_handlers, [
            {"/", "{couch_httpd_misc_handlers, handle_welcome_req, <<\"Welcome\">>}"},
            {"favicon.ico", "{couch_httpd_misc_handlers, handle_favicon_req, \"{{prefix}}/share/www\"}"},
            {"_utils", "{couch_httpd_misc_handlers, handle_utils_dir_req, \"{{prefix}}/share/www\"}"},
            {"_all_dbs", "{couch_httpd_misc_handlers, handle_all_dbs_req}"},
            {"_active_tasks", "{couch_httpd_misc_handlers, handle_task_status_req}"},
            {"_config", "{couch_httpd_misc_handlers, handle_config_req}"},
            {"_replicate", "{couch_replicator_httpd, handle_req}"},
            {"_uuids", "{couch_httpd_misc_handlers, handle_uuids_req}"},
            {"_stats", "{couch_stats_httpd, handle_stats_req}"},
            {"_session", "{couch_httpd_auth, handle_session_req}"}
        ]},
        {httpd_db_handlers, [
            {"_all_docs", "{couch_mrview_http, handle_all_docs_req}"},
            {"_local_docs", "{couch_mrview_http, handle_local_docs_req}"},
            {"_design_docs", "{couch_mrview_http, handle_design_docs_req}"},
            {"_changes", "{couch_httpd_db, handle_db_changes_req}"},
            {"_compact", "{couch_httpd_db, handle_compact_req}"},
            {"_design", "{couch_httpd_db, handle_design_req}"},
            {"_temp_view", "{couch_mrview_http, handle_temp_view_req}"},
            {"_view_cleanup", "{couch_mrview_http, handle_cleanup_req}"}
        ]},
        {httpd_design_handlers, [
            {"_compact", "{couch_mrview_http, handle_compact_req}"},
            {"_info", "{couch_mrview_http, handle_info_req}"},
            {"_list", "{couch_mrview_show, handle_view_list_req}"},
            {"_rewrite", "{couch_httpd_rewrite, handle_rewrite_req}"},
            {"_show", "{couch_mrview_show, handle_doc_show_req}"},
            {"_update", "{couch_mrview_show, handle_doc_update_req}"},
            {"_view", "{couch_mrview_http, handle_view_req}"}
        ]}
    ]}
]}.
