Announcement: fix dialyzer errors and add typespec for the changeset
It was possible for this to raise (no_local_return) because the data key could be missing from the params
This commit is contained in:
parent
eb4dd50f53
commit
38ebefce9c
|
@ -23,19 +23,21 @@ defmodule Pleroma.Announcement do
|
||||||
timestamps(type: :utc_datetime)
|
timestamps(type: :utc_datetime)
|
||||||
end
|
end
|
||||||
|
|
||||||
def change(struct, params \\ %{}) do
|
@doc "Generates changeset for %Pleroma.Announcement{}"
|
||||||
struct
|
@spec changeset(%__MODULE__{}, map()) :: %Ecto.Changeset{}
|
||||||
|> cast(validate_params(struct, params), [:data, :starts_at, :ends_at, :rendered])
|
def changeset(announcement \\ %__MODULE__{}, params \\ %{data: %{}}) do
|
||||||
|
announcement
|
||||||
|
|> cast(validate_params(announcement, params), [:data, :starts_at, :ends_at, :rendered])
|
||||||
|> validate_required([:data])
|
|> validate_required([:data])
|
||||||
end
|
end
|
||||||
|
|
||||||
defp validate_params(struct, params) do
|
defp validate_params(announcement, params) do
|
||||||
base_data =
|
base_data =
|
||||||
%{
|
%{
|
||||||
"content" => "",
|
"content" => "",
|
||||||
"all_day" => false
|
"all_day" => false
|
||||||
}
|
}
|
||||||
|> Map.merge((struct && struct.data) || %{})
|
|> Map.merge((announcement && announcement.data) || %{})
|
||||||
|
|
||||||
merged_data =
|
merged_data =
|
||||||
Map.merge(base_data, params.data)
|
Map.merge(base_data, params.data)
|
||||||
|
@ -61,13 +63,13 @@ def add_rendered_properties(params) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def add(params) do
|
def add(params) do
|
||||||
changeset = change(%__MODULE__{}, params)
|
changeset = changeset(%__MODULE__{}, params)
|
||||||
|
|
||||||
Repo.insert(changeset)
|
Repo.insert(changeset)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update(announcement, params) do
|
def update(announcement, params) do
|
||||||
changeset = change(announcement, params)
|
changeset = changeset(announcement, params)
|
||||||
|
|
||||||
Repo.update(changeset)
|
Repo.update(changeset)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue