/* * Copyright (C) 2015-present ScyllaDB */ /* * SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0 */ #pragma once #include #include #include "api/api_init.hh" #include "db/data_listeners.hh" #include "compaction/compaction_descriptor.hh" #include "gms/gossip_address_map.hh" namespace cql_transport { class controller; } namespace db { class snapshot_ctl; namespace view { class view_builder; } class system_keyspace; } namespace netw { class messaging_service; } class repair_service; class sstables_loader; namespace gms { class gossiper; } namespace api { // verify that the keyspace is found, otherwise a bad_param_exception exception is thrown // containing the description of the respective keyspace error. sstring validate_keyspace(const http_context& ctx, sstring ks_name); // verify that the keyspace parameter is found, otherwise a bad_param_exception exception is thrown // containing the description of the respective keyspace error. sstring validate_keyspace(const http_context& ctx, const std::unique_ptr& req); // verify that the keyspace:table is found, otherwise a bad_param_exception exception is thrown // returns the table_id of the table if found table_id validate_table(const replica::database& db, sstring ks_name, sstring table_name); // splits a request parameter assumed to hold a comma-separated list of table names // verify that the tables are found, otherwise a bad_param_exception exception is thrown // containing the description of the respective no_such_column_family error. // Returns a vector of all table infos given by the parameter, or // if the parameter is not found or is empty, returns a list of all table infos in the keyspace. std::vector parse_table_infos(const sstring& ks_name, const http_context& ctx, sstring value); std::pair> parse_table_infos(const http_context& ctx, const http::request& req, sstring cf_param_name = "cf"); struct scrub_info { compaction::compaction_type_options::scrub opts; sstring keyspace; std::vector column_families; sstring snapshot_tag; }; scrub_info parse_scrub_options(const http_context& ctx, std::unique_ptr req); void set_storage_service(http_context& ctx, httpd::routes& r, sharded& ss, sharded&, service::raft_group0_client&); void unset_storage_service(http_context& ctx, httpd::routes& r); void set_sstables_loader(http_context& ctx, httpd::routes& r, sharded& sst_loader); void unset_sstables_loader(http_context& ctx, httpd::routes& r); void set_view_builder(http_context& ctx, httpd::routes& r, sharded& vb, sharded& g); void unset_view_builder(http_context& ctx, httpd::routes& r); void set_repair(http_context& ctx, httpd::routes& r, sharded& repair, sharded& am); void unset_repair(http_context& ctx, httpd::routes& r); void set_transport_controller(http_context& ctx, httpd::routes& r, cql_transport::controller& ctl); void unset_transport_controller(http_context& ctx, httpd::routes& r); void set_thrift_controller(http_context& ctx, httpd::routes& r); void unset_thrift_controller(http_context& ctx, httpd::routes& r); void set_snapshot(http_context& ctx, httpd::routes& r, sharded& snap_ctl); void unset_snapshot(http_context& ctx, httpd::routes& r); void set_load_meter(http_context& ctx, httpd::routes& r, service::load_meter& lm); void unset_load_meter(http_context& ctx, httpd::routes& r); seastar::future run_toppartitions_query(db::toppartitions_query& q, bool legacy_request = false); // converts string value of boolean parameter into bool // maps (case insensitively) // "true", "yes" and "1" into true // "false", "no" and "0" into false // otherwise throws runtime_error bool validate_bool_x(const sstring& param, bool default_value); } // namespace api