First pass at record sets

This commit is contained in:
Claudio Ortolina
2026-02-05 11:46:52 +00:00
parent b17fa006d5
commit 419b093101
13 changed files with 1089 additions and 0 deletions
@@ -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