#include "migration/cassandra/ExampleTransactionsMigrator.hpp" #include "data/DBHelpers.hpp" #include "migration/cassandra/impl/TransactionsAdapter.hpp" #include "migration/cassandra/impl/Types.hpp" #include "util/Mutex.hpp" #include "util/config/ObjectView.hpp" #include #include #include #include #include #include #include #include std::uint64_t ExampleTransactionsMigrator::count; void ExampleTransactionsMigrator::runMigration( std::shared_ptr const& backend, util::config::ObjectView const& config ) { auto const ctxFullScanThreads = config.get("full_scan_threads"); auto const jobsFullScan = config.get("full_scan_jobs"); auto const cursorPerJobsFullScan = config.get("cursors_per_job"); using HashSet = std::unordered_set; util::Mutex hashSet; migration::cassandra::impl::TransactionsScanner scanner( {.ctxThreadsNum = ctxFullScanThreads, .jobsNum = jobsFullScan, .cursorsPerJob = cursorPerJobsFullScan}, migration::cassandra::impl::TransactionsAdapter( backend, [&](ripple::STTx const& tx, ripple::TxMeta const&) { hashSet.lock()->insert(ripple::to_string(tx.getTransactionID())); auto const json = tx.getJson(ripple::JsonOptions::none); auto const txType = json["TransactionType"].asString(); backend->writeTxIndexExample(uint256ToString(tx.getTransactionID()), txType); } ) ); scanner.wait(); count = hashSet.lock()->size(); }