Discogs.Models.Release (discogs_shuffle v0.2.0) View Source

Ecto model representing a Discogs release.

Link to this section Summary

Functions

Validates the params and returns an Ecto changeset on success.

Formats the Release name for consumption by the Discogs.Repo (or elsewhere).

Gets the Release by discogs id.

Gets the Release or an Ecto changeset ready for insert.

Link to this section Types

Specs

attr_map() :: %{optional(any()) => any(), :discogs_id => discogs_id()}

Specs

changeset() :: {:changeset, Ecto.Changeset.t()}

Specs

discogs_id() :: pos_integer()

Specs

release() ::
  {:release,
   %Discogs.Models.Release{
     __meta__: term(),
     artists: term(),
     discogs_id: term(),
     id: term(),
     inserted_at: term(),
     name: term(),
     records: term(),
     updated_at: term(),
     users: term()
   }}

Specs

result() :: release() | changeset()

Link to this section Functions

Link to this function

changeset(release, params \\ %{})

View Source

Specs

changeset(
  %Discogs.Models.Release{
    __meta__: term(),
    artists: term(),
    discogs_id: term(),
    id: term(),
    inserted_at: term(),
    name: term(),
    records: term(),
    updated_at: term(),
    users: term()
  },
  %{optional(any()) => any()}
) :: Ecto.Changeset.t()

Validates the params and returns an Ecto changeset on success.

Specs

format_name(%Discogs.Models.Release{
  __meta__: term(),
  artists: term(),
  discogs_id: term(),
  id: term(),
  inserted_at: term(),
  name: term(),
  records: term(),
  updated_at: term(),
  users: term()
}) :: String.t()

Formats the Release name for consumption by the Discogs.Repo (or elsewhere).

TODO: This should be done by implementing String.Chars.

cf. https://elixirschool.com/en/lessons/advanced/protocols/

Link to this function

get_by_discogs_id(discogs_id)

View Source

Specs

get_by_discogs_id(discogs_id :: discogs_id()) :: %Discogs.Models.Release{
  __meta__: term(),
  artists: term(),
  discogs_id: term(),
  id: term(),
  inserted_at: term(),
  name: term(),
  records: term(),
  updated_at: term(),
  users: term()
}

Gets the Release by discogs id.

Link to this function

get_struct_or_changeset(attr_map)

View Source

Specs

get_struct_or_changeset(attr_map()) :: result()

Gets the Release or an Ecto changeset ready for insert.