Add associations between notes and artists/records
This commit is contained in:
@@ -4,6 +4,7 @@ defmodule MusicLibrary.Artists.ArtistInfo do
|
|||||||
import Ecto.Changeset
|
import Ecto.Changeset
|
||||||
|
|
||||||
alias MusicBrainz.ExternalLink
|
alias MusicBrainz.ExternalLink
|
||||||
|
alias MusicLibrary.Notes.Note
|
||||||
|
|
||||||
@primary_key {:id, :binary_id, autogenerate: true}
|
@primary_key {:id, :binary_id, autogenerate: true}
|
||||||
schema "artist_infos" do
|
schema "artist_infos" do
|
||||||
@@ -11,6 +12,8 @@ defmodule MusicLibrary.Artists.ArtistInfo do
|
|||||||
field :discogs_data, :map, default: %{}
|
field :discogs_data, :map, default: %{}
|
||||||
field :image_data_hash, :string
|
field :image_data_hash, :string
|
||||||
|
|
||||||
|
has_one :note, Note, foreign_key: :musicbrainz_id
|
||||||
|
|
||||||
timestamps(type: :utc_datetime)
|
timestamps(type: :utc_datetime)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,15 @@ defmodule MusicLibrary.Records.ArtistRecord do
|
|||||||
use Ecto.Schema
|
use Ecto.Schema
|
||||||
|
|
||||||
alias MusicLibrary.Artists.Artist
|
alias MusicLibrary.Artists.Artist
|
||||||
|
alias MusicLibrary.Notes.Note
|
||||||
|
|
||||||
@primary_key false
|
@primary_key false
|
||||||
schema "artist_records" do
|
schema "artist_records" do
|
||||||
field :musicbrainz_id, Ecto.UUID
|
field :musicbrainz_id, Ecto.UUID
|
||||||
field :record_id, Ecto.UUID
|
field :record_id, Ecto.UUID
|
||||||
|
|
||||||
|
has_one :note, Note, foreign_key: :musicbrainz_id, references: :musicbrainz_id
|
||||||
|
|
||||||
embeds_one :artist, Artist
|
embeds_one :artist, Artist
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
import Ecto.Changeset
|
import Ecto.Changeset
|
||||||
|
|
||||||
alias MusicBrainz.{Release, ReleaseGroup}
|
alias MusicBrainz.{Release, ReleaseGroup}
|
||||||
alias MusicLibrary.Artists.Artist
|
alias MusicLibrary.{Artists.Artist, Notes.Note}
|
||||||
|
|
||||||
@formats [:cd, :backup, :vinyl, :blu_ray, :dvd, :multi]
|
@formats [:cd, :backup, :vinyl, :blu_ray, :dvd, :multi]
|
||||||
@types [:album, :ep, :live, :compilation, :single, :other]
|
@types [:album, :ep, :live, :compilation, :single, :other]
|
||||||
@@ -28,6 +28,7 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
field :dominant_colors, {:array, :string}, default: []
|
field :dominant_colors, {:array, :string}, default: []
|
||||||
|
|
||||||
embeds_many :artists, Artist, on_replace: :delete
|
embeds_many :artists, Artist, on_replace: :delete
|
||||||
|
has_one :note, Note, foreign_key: :musicbrainz_id, references: :musicbrainz_id
|
||||||
|
|
||||||
timestamps(type: :utc_datetime)
|
timestamps(type: :utc_datetime)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user