@@ -110,9 +110,9 @@ const std::unordered_set<std::string_view> kValidSnapshotSummaryFields = {
110110 SnapshotSummaryFields::kTotalEqDeletes ,
111111 SnapshotSummaryFields::kDeletedDuplicatedFiles ,
112112 SnapshotSummaryFields::kChangedPartitionCountProp ,
113- SnapshotSummaryFields::kWAPID ,
114- SnapshotSummaryFields::kPublishedWAPID ,
115- SnapshotSummaryFields::kSourceSnapshotID ,
113+ SnapshotSummaryFields::kWAPId ,
114+ SnapshotSummaryFields::kPublishedWAPId ,
115+ SnapshotSummaryFields::kSourceSnapshotId ,
116116 SnapshotSummaryFields::kEngineName ,
117117 SnapshotSummaryFields::kEngineVersion };
118118
@@ -154,6 +154,14 @@ Result<std::optional<T>> GetJsonValueOptional(const nlohmann::json& json,
154154 }
155155}
156156
157+ template <typename T>
158+ void SetOptionalField (nlohmann::json& json, std::string_view key,
159+ const std::optional<T>& value) {
160+ if (value.has_value ()) {
161+ json[key] = *value;
162+ }
163+ }
164+
157165} // namespace
158166
159167nlohmann::json ToJson (const SortField& sort_field) {
@@ -302,44 +310,25 @@ nlohmann::json SnapshotRefToJson(const SnapshotRef& ref) {
302310 json[kType ] = SnapshotRefTypeToString (ref.type ());
303311 if (ref.type () == SnapshotRefType::kBranch ) {
304312 const auto & branch = std::get<SnapshotRef::Branch>(ref.retention );
305- if (branch.min_snapshots_to_keep .has_value ()) {
306- json[kMinSnapshotsToKeep ] = *branch.min_snapshots_to_keep ;
307- }
308- if (branch.max_snapshot_age_ms .has_value ()) {
309- json[kMaxSnapshotAgeMs ] = *branch.max_snapshot_age_ms ;
310- }
311- if (branch.max_ref_age_ms .has_value ()) {
312- json[kMaxRefAgeMs ] = *branch.max_ref_age_ms ;
313- }
313+ SetOptionalField (json, kMinSnapshotsToKeep , branch.min_snapshots_to_keep );
314+ SetOptionalField (json, kMaxSnapshotAgeMs , branch.max_snapshot_age_ms );
315+ SetOptionalField (json, kMaxRefAgeMs , branch.max_ref_age_ms );
314316 } else if (ref.type () == SnapshotRefType::kTag ) {
315317 const auto & tag = std::get<SnapshotRef::Tag>(ref.retention );
316- if (tag.max_ref_age_ms .has_value ()) {
317- json[kMaxRefAgeMs ] = *tag.max_ref_age_ms ;
318- }
318+ SetOptionalField (json, kMaxRefAgeMs , tag.max_ref_age_ms );
319319 }
320320 return json;
321321}
322322
323323nlohmann::json SnapshotToJson (const Snapshot& snapshot) {
324324 nlohmann::json json;
325325 json[kSnapshotId ] = snapshot.snapshot_id ;
326- if (snapshot.parent_snapshot_id .has_value ()) {
327- json[kParentSnapshotId ] = *snapshot.parent_snapshot_id ;
328- }
326+ SetOptionalField (json, kParentSnapshotId , snapshot.parent_snapshot_id );
329327 json[kSequenceNumber ] = snapshot.sequence_number ;
330328 json[kTimestampMs ] = snapshot.timestamp_ms ;
331329 json[kManifestList ] = snapshot.manifest_list ;
332-
333- nlohmann::json summary_json;
334- for (const auto & [key, value] : snapshot.summary ) {
335- summary_json[key] = value;
336- }
337- json[kSummary ] = summary_json;
338-
339- if (snapshot.schema_id .has_value ()) {
340- json[kSchemaId ] = *snapshot.schema_id ;
341- }
342-
330+ json[kSummary ] = snapshot.summary ;
331+ SetOptionalField (json, kSchemaId , snapshot.schema_id );
343332 return json;
344333}
345334
0 commit comments