From 34111a44bab6f073d2492c75c3361437c9596340 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Thu, 12 Sep 2024 14:33:57 +0100 Subject: [PATCH] Generate basic artist schema --- lib/music_library/records/artist.ex | 21 +++++++++++++++++++ .../20240912133309_create_artists.exs | 14 +++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 lib/music_library/records/artist.ex create mode 100644 priv/repo/migrations/20240912133309_create_artists.exs diff --git a/lib/music_library/records/artist.ex b/lib/music_library/records/artist.ex new file mode 100644 index 00000000..4b82fbc9 --- /dev/null +++ b/lib/music_library/records/artist.ex @@ -0,0 +1,21 @@ +defmodule MusicLibrary.Records.Artist do + use Ecto.Schema + import Ecto.Changeset + + @primary_key {:id, :binary_id, autogenerate: true} + @foreign_key_type :binary_id + schema "artists" do + field :name, :string + field :image, :string + field :musicbrainz_id, Ecto.UUID + + timestamps(type: :utc_datetime) + end + + @doc false + def changeset(artist, attrs) do + artist + |> cast(attrs, [:name, :musicbrainz_id, :image]) + |> validate_required([:name, :musicbrainz_id, :image]) + end +end diff --git a/priv/repo/migrations/20240912133309_create_artists.exs b/priv/repo/migrations/20240912133309_create_artists.exs new file mode 100644 index 00000000..2e48b7e0 --- /dev/null +++ b/priv/repo/migrations/20240912133309_create_artists.exs @@ -0,0 +1,14 @@ +defmodule MusicLibrary.Repo.Migrations.CreateArtists do + use Ecto.Migration + + def change do + create table(:artists, primary_key: false) do + add :id, :binary_id, primary_key: true + add :name, :string + add :musicbrainz_id, :uuid + add :image, :string + + timestamps(type: :utc_datetime) + end + end +end