25 std::vector<std::string> unique;
26 unique.reserve(values.size());
27 for (
auto& value : values) {
32 if (std::find(unique.begin(), unique.end(), value) != unique.end()) {
35 unique.push_back(value);
37 values = std::move(unique);
45std::size_t
indexOfTransactionId(
const std::vector<std::string>& transactionIds,
const std::string& value) {
47 const auto it = std::find(transactionIds.begin(), transactionIds.end(), normalized);
48 if (it == transactionIds.end()) {
49 return transactionIds.size();
51 return static_cast<std::size_t
>(std::distance(transactionIds.begin(), it));
55 std::vector<std::string> unique;
56 unique.reserve(transactionIds.size());
57 for (
const auto& transactionId : transactionIds) {
58 if (transactionId.empty()) {
61 if (std::find(unique.begin(), unique.end(), transactionId) != unique.end()) {
64 unique.push_back(transactionId);
void normalizeIds(std::vector< std::string > &values)
Normalizes and deduplicates transaction identifiers.
bool hasUniqueTransactionIds(const std::vector< std::string > &transactionIds)
Checks whether a transaction id list contains duplicates.
bool containsTransactionId(const std::vector< std::string > &transactionIds, const std::string &value)
Checks whether a statement already contains a transaction id.
std::string trimCopy(std::string value)
Trims leading and trailing whitespace from text.
std::size_t indexOfTransactionId(const std::vector< std::string > &transactionIds, const std::string &value)
Returns the index of a transaction id.
std::string normalizeId(std::string value)
Normalizes a transaction identifier.