userver: userver/storages/clickhouse/component.hpp Source File
Loading...
Searching...
No Matches
component.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/storages/clickhouse/component.hpp
4/// @brief @copybrief components::ClickHouse
5
6#include <userver/components/component_base.hpp>
7
8#include <userver/utils/statistics/storage.hpp>
9
10USERVER_NAMESPACE_BEGIN
11
12namespace clients::dns {
13class Component;
14}
15
16namespace storages::clickhouse {
17class Cluster;
18}
19
20namespace components {
21
22/// @ingroup userver_components
23///
24/// @brief ClickHouse client component
25///
26/// Provides access to a ClickHouse cluster.
27///
28/// ## Static configuration example:
29///
30/// @snippet samples/clickhouse_service/static_config.yaml Clickhouse service sample - static config
31///
32/// If the component is configured with an secdist_alias, it will lookup
33/// connection data in secdist.json via secdist_alias value, otherwise via components name.
34///
35/// ## Secdist format
36///
37/// A ClickHouse alias in secdist is described as a JSON object
38/// `clickhouse_settings`, containing descriptions of databases.
39///
40/// @snippet samples/clickhouse_service/tests/conftest.py Clickhouse service sample - secdist
41///
42/// ## Static options of components::ClickHouse :
43/// @include{doc} scripts/docs/en/components_schema/clickhouse/src/storages/clickhouse/component.md
44///
45/// Options inherited from @ref components::ComponentBase :
46/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
47class ClickHouse : public ComponentBase {
48public:
49 /// Component constructor
50 ClickHouse(const ComponentConfig&, const ComponentContext&);
51 /// Component destructor
52 ~ClickHouse() override;
53
54 /// Cluster accessor
55 std::shared_ptr<storages::clickhouse::Cluster> GetCluster() const;
56
57 static yaml_config::Schema GetStaticConfigSchema();
58
59private:
60 clients::dns::Component& dns_;
61
62 std::shared_ptr<storages::clickhouse::Cluster> cluster_;
63 utils::statistics::Entry statistics_holder_;
64};
65
66template <>
67inline constexpr bool kHasValidate<ClickHouse> = true;
68
69} // namespace components
70
71USERVER_NAMESPACE_END