| 154 | std::size_t ColumnCount() { return Columns().size(); } |
| 155 | |
| 156 | spanner::Mutation UpdateObjectMetadata(gcs::ObjectMetadata const& object) { |
| 157 | auto const& columns = Columns(); |
| 158 | std::vector<spanner::Value> values(columns.size()); |
| 159 | std::transform(columns.begin(), columns.end(), values.begin(), |
| 160 | [&object](auto const& p) { |
| 161 | auto const& [name, to_value] = p; |
| 162 | return to_value(object); |
| 163 | }); |
| 164 | return spanner::InsertOrUpdateMutationBuilder("gcs_objects", Names()) |
| 165 | .AddRow(std::move(values)) |
| 166 | .Build(); |
| 167 | } |
| 168 | |
| 169 | std::string GetEnv(char const* var) { |
| 170 | auto const* value = std::getenv(var); |
no test coverage detected