|> validate_required([:type, :name, :icon])
end
+ def changeset(struct, %{"type" => "Book"} = data) do
+ data =
+ if Map.has_key?(data, "title") do
+ Map.put(data, "name", data["title"])
+ else
+ data
+ end
+
+ struct
+ |> cast(data, [:type, :name])
+ |> validate_required([:type, :name])
+ end
+
+ def changeset(struct, %{"type" => "Edition"} = data) do
+ # Sometimes it's title, sometimes name
+ # Don't ask me.
+ data =
+ if Map.has_key?(data, "title") do
+ Map.put(data, "name", data["title"])
+ else
+ data
+ end
+
+ struct
+ |> cast(data, [:type, :name])
+ |> validate_required([:type, :name])
+ end
+
+ def changeset(struct, %{"type" => "Work"} = data) do
+ data =
+ if Map.has_key?(data, "title") do
+ Map.put(data, "name", data["title"])
+ else
+ data
+ end
+
+ struct
+ |> cast(data, [:type, :name])
+ |> validate_required([:type, :name])
+ end
+
+ def changeset(struct, %{"type" => "Author"} = data) do
+ struct
+ |> cast(data, [:type, :name])
+ |> validate_required([:type, :name])
+ end
+
def icon_changeset(struct, data) do
struct
|> cast(data, [:type, :url])