Helper function for setting default Struct key
Setting a default key for an Elixir Struct was something I had searched Google for and had a hard time finding a solution for. I hope this quick post is able to be the solution needed for some of you beautiful devs out there just trying your best.
The set_struct_default
function below has an arity of three, accepting a struct, a key to set a default for and a default value. The function body checks if the struct already has a value for the key being checked, if it does it will just return the struct, otherwise it will set the default value.
def set_struct_default(struct, key, default) do
if Map.has_key?(struct, key) do
struct
else
Map.put(struct, key, default)
end
end
Note if you’re trying to set a default for a schema based struct like with Ecto or Absinthe then those types libraries typically allow you to define a default for a “field” in the struct as a keyword list option default: "some default string"
.
If you enjoyed this post you may also enjoy Update what Ecto considers nil / empty.