summaryrefslogtreecommitdiff
path: root/lib/powerdnsex/models/resource_record_set.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/powerdnsex/models/resource_record_set.ex')
-rw-r--r--lib/powerdnsex/models/resource_record_set.ex14
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
###