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
+110
View File
@@ -14,6 +14,7 @@ msgstr ""
#: lib/music_library_web/components/record_components.ex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.html.heex
@@ -38,6 +39,7 @@ msgstr ""
#: lib/music_library_web/components/record_components.ex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.html.heex
@@ -52,6 +54,7 @@ msgstr ""
#: lib/music_library_web/live/collection_live/show.ex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.ex
@@ -175,6 +178,7 @@ msgstr ""
#: lib/music_library_web/components/record_form.ex
#: lib/music_library_web/live/artist_live/form.ex
#: lib/music_library_web/live/online_store_template_live/form.ex
#: lib/music_library_web/live/record_set_live/form.ex
#: lib/music_library_web/live/scrobble_rules_live/form.ex
#: lib/music_library_web/live/scrobbled_tracks_live/form.ex
#, elixir-autogen, elixir-format
@@ -182,6 +186,7 @@ msgid "Saving..."
msgstr ""
#: lib/music_library_web/components/core_components.ex
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "Search"
msgstr ""
@@ -390,6 +395,7 @@ msgid "On Tour"
msgstr ""
#: lib/music_library_web/components/record_components.ex
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "1 record"
msgid_plural "%{count} records"
@@ -899,6 +905,7 @@ msgstr ""
#: lib/music_library_web/live/artist_live/show.html.heex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.html.heex
@@ -977,6 +984,7 @@ msgid "Artist Name"
msgstr ""
#: lib/music_library_web/live/online_store_template_live/form.ex
#: lib/music_library_web/live/record_set_live/form.ex
#: lib/music_library_web/live/scrobble_rules_live/form.ex
#, elixir-autogen, elixir-format
msgid "Description (optional)"
@@ -1687,3 +1695,105 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Regenerate embeddings"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#, elixir-autogen, elixir-format
msgid "Add Record"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "Could not add record to set"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#, elixir-autogen, elixir-format
msgid "Edit Set"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Move left"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Move right"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "Name"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "New Set"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "No record sets yet"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "No records found"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Record Sets"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "Record added to set"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "Record set created successfully"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "Record set updated successfully"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Remove"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Remove this record from the set?"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "Save Set"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "Search your collection to add a record to this set."
msgstr ""
#: lib/music_library_web/components/layouts/app.html.heex
#, elixir-autogen, elixir-format
msgid "Sets"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "What is this set about?"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "e.g. Favorites, Road Trip, Sunday Morning"
msgstr ""
+110
View File
@@ -14,6 +14,7 @@ msgstr ""
#: lib/music_library_web/components/record_components.ex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.html.heex
@@ -38,6 +39,7 @@ msgstr ""
#: lib/music_library_web/components/record_components.ex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.html.heex
@@ -52,6 +54,7 @@ msgstr ""
#: lib/music_library_web/live/collection_live/show.ex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.ex
@@ -175,6 +178,7 @@ msgstr ""
#: lib/music_library_web/components/record_form.ex
#: lib/music_library_web/live/artist_live/form.ex
#: lib/music_library_web/live/online_store_template_live/form.ex
#: lib/music_library_web/live/record_set_live/form.ex
#: lib/music_library_web/live/scrobble_rules_live/form.ex
#: lib/music_library_web/live/scrobbled_tracks_live/form.ex
#, elixir-autogen, elixir-format
@@ -182,6 +186,7 @@ msgid "Saving..."
msgstr ""
#: lib/music_library_web/components/core_components.ex
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "Search"
msgstr ""
@@ -390,6 +395,7 @@ msgid "On Tour"
msgstr ""
#: lib/music_library_web/components/record_components.ex
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "1 record"
msgid_plural "%{count} records"
@@ -899,6 +905,7 @@ msgstr ""
#: lib/music_library_web/live/artist_live/show.html.heex
#: lib/music_library_web/live/collection_live/show.html.heex
#: lib/music_library_web/live/online_store_template_live/index.html.heex
#: lib/music_library_web/live/record_set_live/index.html.heex
#: lib/music_library_web/live/scrobble_rules_live/index.html.heex
#: lib/music_library_web/live/scrobbled_tracks_live/index.html.heex
#: lib/music_library_web/live/wishlist_live/show.html.heex
@@ -977,6 +984,7 @@ msgid "Artist Name"
msgstr ""
#: lib/music_library_web/live/online_store_template_live/form.ex
#: lib/music_library_web/live/record_set_live/form.ex
#: lib/music_library_web/live/scrobble_rules_live/form.ex
#, elixir-autogen, elixir-format
msgid "Description (optional)"
@@ -1687,3 +1695,105 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Regenerate embeddings"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#, elixir-autogen, elixir-format
msgid "Add Record"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "Could not add record to set"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit Set"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Move left"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Move right"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "Name"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format, fuzzy
msgid "New Set"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "No record sets yet"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "No records found"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.ex
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format, fuzzy
msgid "Record Sets"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Record added to set"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Record set created successfully"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Record set updated successfully"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Remove"
msgstr ""
#: lib/music_library_web/live/record_set_live/index.html.heex
#, elixir-autogen, elixir-format
msgid "Remove this record from the set?"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format, fuzzy
msgid "Save Set"
msgstr ""
#: lib/music_library_web/live/record_set_live/record_picker.ex
#, elixir-autogen, elixir-format
msgid "Search your collection to add a record to this set."
msgstr ""
#: lib/music_library_web/components/layouts/app.html.heex
#, elixir-autogen, elixir-format
msgid "Sets"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "What is this set about?"
msgstr ""
#: lib/music_library_web/live/record_set_live/form.ex
#, elixir-autogen, elixir-format
msgid "e.g. Favorites, Road Trip, Sunday Morning"
msgstr ""
@@ -0,0 +1,13 @@
defmodule MusicLibrary.Repo.Migrations.CreateRecordSets do
use Ecto.Migration
def change do
create table(:record_sets, primary_key: false) do
add :id, :binary_id, primary_key: true
add :name, :string, null: false
add :description, :text
timestamps(type: :utc_datetime)
end
end
end
@@ -0,0 +1,21 @@
defmodule MusicLibrary.Repo.Migrations.CreateRecordSetItems do
use Ecto.Migration
def change do
create table(:record_set_items, primary_key: false) do
add :id, :binary_id, primary_key: true
add :position, :integer, null: false
add :record_set_id, references(:record_sets, type: :binary_id, on_delete: :delete_all),
null: false
add :record_id, references(:records, type: :binary_id, on_delete: :delete_all), null: false
timestamps(type: :utc_datetime)
end
create index(:record_set_items, [:record_set_id])
create unique_index(:record_set_items, [:record_set_id, :record_id])
create index(:record_set_items, [:record_set_id, :position])
end
end