diff --git a/lib/music_library/records.ex b/lib/music_library/records.ex index 96f65a36..6ec84510 100644 --- a/lib/music_library/records.ex +++ b/lib/music_library/records.ex @@ -1,22 +1,9 @@ defmodule MusicLibrary.Records do - @moduledoc """ - The Records context. - """ - import Ecto.Query, warn: false alias MusicLibrary.Repo alias MusicLibrary.Records.Record - @doc """ - Returns the list of records. - - ## Examples - - iex> list_records() - [%Record{}, ...] - - """ def list_records do q = from r in Record, @@ -26,88 +13,33 @@ defmodule MusicLibrary.Records do Repo.all(q) end - @doc """ - Gets a single record. - - Raises `Ecto.NoResultsError` if the Record does not exist. - - ## Examples - - iex> get_record!(123) - %Record{} - - iex> get_record!(456) - ** (Ecto.NoResultsError) - - """ def get_record!(id), do: Repo.get!(Record, id) def get_image!(id) do - record = get_record!(id) - {:ok, record.image_data} + q = + from r in Record, + where: r.id == ^id, + select: r.image_data + + Repo.one!(q) end - @doc """ - Creates a record. - - ## Examples - - iex> create_record(%{field: value}) - {:ok, %Record{}} - - iex> create_record(%{field: bad_value}) - {:error, %Ecto.Changeset{}} - - """ def create_record(attrs \\ %{}) do %Record{} |> Record.changeset(attrs) |> Repo.insert() end - @doc """ - Updates a record. - - ## Examples - - iex> update_record(record, %{field: new_value}) - {:ok, %Record{}} - - iex> update_record(record, %{field: bad_value}) - {:error, %Ecto.Changeset{}} - - """ def update_record(%Record{} = record, attrs) do record |> Record.changeset(attrs) |> Repo.update() end - @doc """ - Deletes a record. - - ## Examples - - iex> delete_record(record) - {:ok, %Record{}} - - iex> delete_record(record) - {:error, %Ecto.Changeset{}} - - """ def delete_record(%Record{} = record) do Repo.delete(record) end - @doc """ - Returns an `%Ecto.Changeset{}` for tracking record changes. - - ## Examples - - iex> change_record(record) - %Ecto.Changeset{data: %Record{}} - - """ def change_record(%Record{} = record, attrs \\ %{}) do Record.changeset(record, attrs) end diff --git a/lib/music_library/records/importer.ex b/lib/music_library/records/importer.ex index 4cd550f8..b0cdf6e4 100644 --- a/lib/music_library/records/importer.ex +++ b/lib/music_library/records/importer.ex @@ -1,9 +1,4 @@ defmodule MusicLibrary.Records.Importer do - require Logger - import Ecto.Query, warn: false - - alias MusicLibrary.Records.Record, as: Rec - @moduledoc """ The original data from Obsidian maps records to release groups, so to find artists for a record we can use the [lookup](https://musicbrainz.org/doc/MusicBrainz_API#Lookups) endpoint with the release group id and include the @@ -38,6 +33,12 @@ defmodule MusicLibrary.Records.Importer do ] } """ + + require Logger + import Ecto.Query, warn: false + + alias MusicLibrary.Records.Record, as: Rec + def import_artists(record) do url = "https://musicbrainz.org/ws/2/release-group/#{record.musicbrainz_id}?fmt=json&inc=artist-credits"