diff options
author | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-09-27 15:45:09 -0300 |
---|---|---|
committer | Tiago Freire <code.tiago.frire@locaweb.com.br> | 2016-09-27 15:45:09 -0300 |
commit | ad6be210406368b83d3bcfc8c3154eb790fc3c35 (patch) | |
tree | 5b61ac6dbdac8bfbbe5db01e194e515491ec6563 /lib/powerdnsex/models/resource_record_set.ex | |
parent | Merge branch 'master' of github.com:akaKuruma/power_dnsex (diff) |
Fix update of Records Manager
Diffstat (limited to '')
-rw-r--r-- | lib/powerdnsex/models/resource_record_set.ex | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/powerdnsex/models/resource_record_set.ex b/lib/powerdnsex/models/resource_record_set.ex index 928848c..52dbed2 100644 --- a/lib/powerdnsex/models/resource_record_set.ex +++ b/lib/powerdnsex/models/resource_record_set.ex @@ -3,6 +3,7 @@ defmodule PowerDNSex.Models.ResourceRecordSet do alias PowerDNSex.Models.Record defstruct [:name, :type, :ttl, :records, :changetype] + @permited_attrs [:ttl, :records] def build(%{records: records} = rrset_attrs) when is_list(records) do build_rrset(rrset_attrs) @@ -33,6 +34,19 @@ defmodule PowerDNSex.Models.ResourceRecordSet do end) end + def update(%__MODULE__{} = rrset, %{} = new_attrs) do + Enum.reduce(@permited_attrs, rrset, fn(attr_name, rrset)-> + case Map.fetch(new_attrs, attr_name) do + {:ok, new_value} -> + if attr_name == :records do + new_value = Record.build(new_value) + end + %{rrset | attr_name => new_value} + _ -> rrset + end + end) + end + ### # Private ### |