Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
MigrationInspectorFactory.hpp
1#pragma once
2
3#include "data/BackendInterface.hpp"
4#include "migration/MigrationInspectorInterface.hpp"
5#include "migration/MigratiorStatus.hpp"
6#include "migration/cassandra/CassandraMigrationManager.hpp"
7#include "util/Assert.hpp"
8#include "util/config/ConfigDefinition.hpp"
9#include "util/log/Logger.hpp"
10
11#include <boost/algorithm/string.hpp>
12#include <boost/algorithm/string/predicate.hpp>
13
14#include <memory>
15#include <utility>
16
17namespace migration {
18
27inline std::shared_ptr<MigrationInspectorInterface>
28makeMigrationInspector(
29 util::config::ClioConfigDefinition const& config,
30 std::shared_ptr<BackendInterface> const& backend
31)
32{
33 ASSERT(backend != nullptr, "Backend is not initialized");
34
35 auto inspector = std::make_shared<migration::cassandra::CassandraMigrationInspector>(backend);
36
37 // Database is empty, we need to initialize the migration table if it is a writeable backend
38 if (not config.get<bool>("read_only") and not backend->hardFetchLedgerRangeNoThrow()) {
39 migration::MigratorStatus const migrated(migration::MigratorStatus::Status::Migrated);
40 for (auto const& name : inspector->allMigratorsNames()) {
41 backend->writeMigratorStatus(name, migrated.toString());
42 }
43 }
44 return inspector;
45}
46
47} // namespace migration
T get(std::string_view fullKey) const
Returns the specified value of given string if value exists.
Definition ConfigDefinition.hpp:85