First pass at record sets
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
defmodule MusicLibrary.RecordSets.RecordSet do
|
||||
use Ecto.Schema
|
||||
|
||||
import Ecto.Changeset
|
||||
|
||||
alias MusicLibrary.RecordSets.RecordSetItem
|
||||
|
||||
@primary_key {:id, :binary_id, autogenerate: true}
|
||||
@foreign_key_type :binary_id
|
||||
schema "record_sets" do
|
||||
field :name, :string
|
||||
field :description, :string
|
||||
|
||||
has_many :items, RecordSetItem, preload_order: [asc: :position]
|
||||
|
||||
timestamps(type: :utc_datetime)
|
||||
end
|
||||
|
||||
def changeset(record_set, attrs) do
|
||||
record_set
|
||||
|> cast(attrs, [:name, :description])
|
||||
|> validate_required([:name])
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,25 @@
|
||||
defmodule MusicLibrary.RecordSets.RecordSetItem do
|
||||
use Ecto.Schema
|
||||
|
||||
import Ecto.Changeset
|
||||
|
||||
alias MusicLibrary.Records.Record
|
||||
alias MusicLibrary.RecordSets.RecordSet
|
||||
|
||||
@primary_key {:id, :binary_id, autogenerate: true}
|
||||
@foreign_key_type :binary_id
|
||||
schema "record_set_items" do
|
||||
field :position, :integer
|
||||
|
||||
belongs_to :record_set, RecordSet
|
||||
belongs_to :record, Record
|
||||
|
||||
timestamps(type: :utc_datetime)
|
||||
end
|
||||
|
||||
def changeset(record_set_item, attrs) do
|
||||
record_set_item
|
||||
|> cast(attrs, [:position])
|
||||
|> validate_required([:position])
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user