struct SampleRow final {
std::int32_t id;
std::string value;
bool operator==(const SampleRow& other) const {
return id == other.id && value == other.value;
}
};
std::pair<const std::int32_t, std::string> Convert(
SampleRow&& db_row,
return {db_row.id, std::move(db_row.value)};
}
void PerformMapFrom(const Cluster& cluster,
const std::vector<SampleRow>& data) {
"INSERT INTO SampleTable(id, value) VALUES(?, ?)", data);
const auto id_value_map =
cluster
"SELECT id, value FROM SampleTable")
.MapFrom<SampleRow>()
.
AsContainer<std::unordered_map<std::int32_t, std::string>>();
static_assert(
std::is_same_v<const std::unordered_map<std::int32_t, std::string>,
decltype(id_value_map)>);
EXPECT_EQ(id_value_map.size(), data.size());
for (const auto& [k, v] : data) {
ASSERT_EQ(id_value_map.at(k), v);
}
}