userver: userver/storages/mysql/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/mysql/component.hpp
4/// @brief @copybrief storages::mysql::Component
5
6#include <memory>
7
8#include <userver/components/component_base.hpp>
9#include <userver/utils/statistics/entry.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace clients::dns {
14class Component;
15}
16
17namespace storages::mysql {
18class Cluster;
19}
20
21namespace storages::mysql {
22
23/// @ingroup userver_components
24///
25/// @brief MySQL/MariaDB client component
26///
27/// Provides access to a MySQL/MariaDB cluster.
28///
29/// ## Static configuration example:
30///
31/// @snippet samples/mysql_service/static_config.yaml MySQL service sample - static config
32///
33/// The component will lookup connection data in secdist.json via its name.
34///
35/// ## Secdist format:
36///
37/// Connection settings are described as a JSON object `mysql_settings`,
38/// containing descriptions of MySQL/MariaDB clusters.
39///
40/// @snippet samples/mysql_service/tests/conftest.py Mysql service sample - secdist
41///
42/// **Important note**: the uMySQL driver does **NOT** perform an automatic
43/// primary detection and always considers the first host in `hosts` list
44/// an only primary node in the cluster.
45///
46/// ## Static options of storages::mysql::Component :
47/// @include{doc} scripts/docs/en/components_schema/mysql/src/storages/mysql/component.md
48///
49/// Options inherited from @ref components::ComponentBase :
50/// @include{doc} scripts/docs/en/components_schema/core/src/components/impl/component_base.md
51class Component final : public components::ComponentBase {
52public:
53 /// Component constructor
54 Component(const components::ComponentConfig& config, const components::ComponentContext& context);
55
56 /// Component destructor
57 ~Component() override;
58
59 /// Cluster accessor
60 std::shared_ptr<storages::mysql::Cluster> GetCluster() const;
61
62 static yaml_config::Schema GetStaticConfigSchema();
63
64private:
65 clients::dns::Component& dns_;
66
67 const std::shared_ptr<storages::mysql::Cluster> cluster_;
68 utils::statistics::Entry statistics_holder_;
69};
70
71} // namespace storages::mysql
72
73USERVER_NAMESPACE_END