First pass at uniformed types, specs and docs

- spec public functions (skipping controllers, views, live views and
components)
- use types instead of explanations in docs
- remove redundant docs
- fix typos
This commit is contained in:
Claudio Ortolina
2026-03-06 08:33:11 +00:00
parent 99e30d5fdf
commit 7cf9b4e7f8
81 changed files with 652 additions and 300 deletions
@@ -16,6 +16,9 @@ defmodule MusicLibrary.RecordSets.RecordSet do
timestamps(type: :utc_datetime)
end
@type t :: %__MODULE__{}
@spec changeset(t() | Ecto.Changeset.t(), map()) :: Ecto.Changeset.t()
def changeset(record_set, attrs) do
record_set
|> cast(attrs, [:name, :description])
@@ -24,6 +27,11 @@ defmodule MusicLibrary.RecordSets.RecordSet do
|> validate_length(:description, max: 10_000)
end
@spec count_by_status(t()) :: %{
collected: non_neg_integer(),
wishlisted: non_neg_integer(),
total: non_neg_integer()
}
def count_by_status(record_set) do
record_set.items
|> Enum.frequencies_by(fn item ->
@@ -17,6 +17,9 @@ defmodule MusicLibrary.RecordSets.RecordSetItem do
timestamps(type: :utc_datetime)
end
@type t :: %__MODULE__{}
@spec changeset(t() | Ecto.Changeset.t(), map()) :: Ecto.Changeset.t()
def changeset(record_set_item, attrs) do
record_set_item
|> cast(attrs, [:position])