diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2023-11-01 11:16:27 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2023-11-01 11:16:27 -0400 |
| commit | fa1a5b057cdbe2394b47334864e9a4bc0e176121 (patch) | |
| tree | 2f13783c9b8e09e3460a233c0272fec6a070f328 | |
| parent | 88983650c38758403a2025d11da112e388dccbef (diff) | |
Refactor the internals of the live apply method.
Using iterator combinators here feels like it's more in line with how I think about the problem.
| -rw-r--r-- | src/apply.rs | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/src/apply.rs b/src/apply.rs index 86e92b4..8a94642 100644 --- a/src/apply.rs +++ b/src/apply.rs @@ -54,33 +54,32 @@ where R: IntoIterator<Item = ResourceRecordSet>, I: IntoIterator<Item = ResourceRecordSet>, { - let mut change_batch = ChangeBatch::builder(); - for remove_record in remove_records { - let change = Change::builder() - .action(ChangeAction::Delete) - .resource_record_set(remove_record) - .build(); - change_batch = change_batch.changes(change); - } - for insert_record in insert_records { - let change = Change::builder() - .action(ChangeAction::Create) - .resource_record_set(insert_record) + let remove_records = remove_records.into_iter().map(|record| { + Change::builder() + .action(ChangeAction::Delete) // <-- + .resource_record_set(record) + .build() + }); + let insert_records = insert_records.into_iter().map(|record| { + Change::builder() + .action(ChangeAction::Create) // <-- + .resource_record_set(record) + .build() + }); + + let change_records: Vec<_> = remove_records.chain(insert_records).collect(); + if !change_records.is_empty() { + let change_batch = ChangeBatch::builder() + .set_changes(Some(change_records)) .build(); - change_batch = change_batch.changes(change); - } - let change_batch = change_batch.build(); - if let Some(changes) = change_batch.changes() { - if !changes.is_empty() { - aws_context - .route53() - .change_resource_record_sets() - .hosted_zone_id(zone_id) - .change_batch(change_batch) - .send() - .await?; - } + aws_context + .route53() + .change_resource_record_sets() + .hosted_zone_id(zone_id) + .change_batch(change_batch) + .send() + .await?; } Ok(()) |
