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