Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
MigrationInspectorBase.hpp
1#pragma once
2
3#include "migration/MigrationInspectorInterface.hpp"
4#include "migration/MigratiorStatus.hpp"
5
6#include <memory>
7#include <ranges>
8#include <string>
9#include <tuple>
10#include <vector>
11
12namespace migration::impl {
13
20template <typename SupportedMigrators>
22protected:
23 SupportedMigrators migrators_;
24
25public:
32 std::shared_ptr<typename SupportedMigrators::BackendType> backend
33 )
34 : migrators_{std::move(backend)}
35 {
36 }
37
44 [[nodiscard]] std::vector<std::tuple<std::string, MigratorStatus>>
45 allMigratorsStatusPairs() const override
46 {
47 return migrators_.getMigratorsStatus();
48 }
49
56 [[nodiscard]] MigratorStatus
57 getMigratorStatusByName(std::string const& name) const override
58 {
59 return migrators_.getMigratorStatus(name);
60 }
61
67 [[nodiscard]] std::vector<std::string>
68 allMigratorsNames() const override
69 {
70 auto const names = migrators_.getMigratorNames();
71 return std::vector<std::string>{names.begin(), names.end()};
72 }
73
80 [[nodiscard]] std::string
81 getMigratorDescriptionByName(std::string const& name) const override
82 {
83 return migrators_.getMigratorDescription(name);
84 }
85
91 [[nodiscard]] bool
92 isBlockingClio() const override
93 {
94 return std::ranges::any_of(migrators_.getMigratorNames(), [&](auto const& migrator) {
95 if (auto canBlock = migrators_.canMigratorBlockClio(migrator); canBlock.has_value() and
96 *canBlock and
97 migrators_.getMigratorStatus(std::string(migrator)) ==
98 MigratorStatus::Status::NotMigrated) {
99 return true;
100 }
101 return false;
102 });
103 }
104};
105
106} // namespace migration::impl
The status of a migrator, it provides the helper functions to convert the status to string and vice v...
Definition MigratiorStatus.hpp:13
std::vector< std::tuple< std::string, MigratorStatus > > allMigratorsStatusPairs() const override
Get the status of all the migrators.
Definition MigrationInspectorBase.hpp:45
MigrationInspectorBase(std::shared_ptr< typename SupportedMigrators::BackendType > backend)
Construct a new Cassandra Migration Inspector object.
Definition MigrationInspectorBase.hpp:31
bool isBlockingClio() const override
Return if there is incomplete migrator blocking the server.
Definition MigrationInspectorBase.hpp:92
std::string getMigratorDescriptionByName(std::string const &name) const override
Get the description of a migrator by its name.
Definition MigrationInspectorBase.hpp:81
MigratorStatus getMigratorStatusByName(std::string const &name) const override
Get the status of a migrator by its name.
Definition MigrationInspectorBase.hpp:57
std::vector< std::string > allMigratorsNames() const override
Get all registered migrators' names.
Definition MigrationInspectorBase.hpp:68
The interface for the migration inspector.The Clio server application will use this interface to insp...
Definition MigrationInspectorInterface.hpp:15