Credo: atom-or-string keys read through one helper

d62a15b · Gabe Morell · 2026-11-04 21:18

7 files +12 -3

Files changed

modified lib/diogramos/accounts/user_token.ex
+4 −1
@@ -188,12 +188,15 @@ defmodule Diogramos.Accounts.UserToken do
188 188 end
189 189
190 190 defp normalize_label(attrs) do
191 − case Map.get(attrs, :label) || Map.get(attrs, "label") do
191 + case attr(attrs, :label) do
192 192 str when is_binary(str) -> str |> String.trim() |> nil_if_empty()
193 193 _ -> nil
194 194 end
195 195 end
196 196
197 + # `attrs` may be atom- or string-keyed.
198 + defp attr(attrs, key), do: Map.get(attrs, key) || Map.get(attrs, Atom.to_string(key))
199 +
197 200 defp nil_if_empty(""), do: nil
198 201 defp nil_if_empty(str), do: str
199 202
modified lib/diogramos/diagrams/canvases.ex
+4 −1
@@ -235,6 +235,9 @@ defmodule Diogramos.Diagrams.Canvases do
235 235 %{"elements" => %{}, "order" => [], "connectors" => %{}}
236 236 end
237 237
238 + # `attrs` may be atom- or string-keyed.
239 + defp attr(attrs, key), do: attrs[key] || attrs[Atom.to_string(key)]
240 +
238 241 defp fresh_token do
239 242 :crypto.strong_rand_bytes(18) |> Base.url_encode64(padding: false)
240 243 end
@@ -242,7 +245,7 @@ defmodule Diogramos.Diagrams.Canvases do
242 245 defp ensure_folder_writable(_scope, attrs) when attrs == %{}, do: :ok
243 246
244 247 defp ensure_folder_writable(scope, attrs) do
245 − folder_id = attrs[:folder_id] || attrs["folder_id"]
248 + folder_id = attr(attrs, :folder_id)
246 249
247 250 if folder_id do
248 251 case Repo.get(Diogramos.Diagrams.Folder, folder_id) do
modified lib/diogramos/diagrams/folders.ex
+4 −1
@@ -103,7 +103,7 @@ defmodule Diogramos.Diagrams.Folders do
103 103 defp ensure_parent_writable(_scope, %{"parent_id" => nil}), do: :ok
104 104
105 105 defp ensure_parent_writable(scope, attrs) do
106 − parent_id = attrs[:parent_id] || attrs["parent_id"]
106 + parent_id = attr(attrs, :parent_id)
107 107
108 108 if is_nil(parent_id) do
109 109 :ok
@@ -115,6 +115,9 @@ defmodule Diogramos.Diagrams.Folders do
115 115 end
116 116 end
117 117
118 + # `attrs` may be atom- or string-keyed.
119 + defp attr(attrs, key), do: attrs[key] || attrs[Atom.to_string(key)]
120 +
118 121 defp ensure_no_cycle(_folder, nil), do: :ok
119 122
120 123 defp ensure_no_cycle(%Folder{id: id}, new_parent_id) when id == new_parent_id,

Parents: 9a276fb