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
+14
View File
@@ -4,6 +4,17 @@ defmodule MusicBrainz.ReleaseSearchResult do
@enforce_keys [:id, :title, :release_group, :artists, :date, :barcode, :media]
defstruct [:id, :title, :release_group, :artists, :date, :barcode, :media]
@type t :: %__MODULE__{
id: String.t(),
title: String.t(),
release_group: map() | nil,
artists: String.t(),
date: String.t() | nil,
barcode: String.t() | nil,
media: [map()]
}
@spec from_api_response(map()) :: t()
def from_api_response(r) do
%__MODULE__{
id: r["id"],
@@ -54,6 +65,8 @@ defmodule MusicBrainz.ReleaseSearchResult do
:multi
"""
@spec format(t()) ::
:cd | :vinyl | :dvd | :blu_ray | :digital_download | :vhs | :multi | :unknown
def format(release_search_result) do
sorted_frequencies =
release_search_result.media
@@ -74,6 +87,7 @@ defmodule MusicBrainz.ReleaseSearchResult do
}
end
@spec parse_media([map()]) :: [map()]
def parse_media(media) do
Enum.map(media, fn m ->
%{