Tighten notes content logic

- Notes can have empty content (no harm)
- Always default to "" instead of nil
This commit is contained in:
Claudio Ortolina
2025-09-23 08:45:51 +03:00
parent be28f6a7b4
commit f5c60d2cd1
2 changed files with 6 additions and 6 deletions
+2 -2
View File
@@ -6,7 +6,7 @@ defmodule MusicLibrary.Notes.Note do
@primary_key {:id, :binary_id, autogenerate: true} @primary_key {:id, :binary_id, autogenerate: true}
schema "notes" do schema "notes" do
field :entity, Ecto.Enum, values: [:record, :artist] field :entity, Ecto.Enum, values: [:record, :artist]
field :content, :string field :content, :string, default: ""
field :musicbrainz_id, Ecto.UUID field :musicbrainz_id, Ecto.UUID
timestamps(type: :utc_datetime) timestamps(type: :utc_datetime)
@@ -19,6 +19,6 @@ defmodule MusicLibrary.Notes.Note do
:content, :content,
:musicbrainz_id :musicbrainz_id
]) ])
|> validate_required([:entity, :content, :musicbrainz_id]) |> validate_required([:entity, :musicbrainz_id])
end end
end end
@@ -25,7 +25,7 @@ defmodule MusicLibraryWeb.NotesComponent do
defp find_or_initialize_note(%{entity: entity, musicbrainz_id: musicbrainz_id}) do defp find_or_initialize_note(%{entity: entity, musicbrainz_id: musicbrainz_id}) do
case Notes.get_note(entity, musicbrainz_id) do case Notes.get_note(entity, musicbrainz_id) do
nil -> nil ->
%Note{entity: entity, musicbrainz_id: musicbrainz_id, content: ""} %Note{entity: entity, musicbrainz_id: musicbrainz_id}
note -> note ->
note note
@@ -52,7 +52,7 @@ defmodule MusicLibraryWeb.NotesComponent do
</.tabs_list> </.tabs_list>
<.tabs_panel active={@mode == "read"} name="read"> <.tabs_panel active={@mode == "read"} name="read">
<article class="w-full mt-5 prose dark:prose-invert prose-zinc prose-sm prose-h1:text-sm"> <article class="w-full mt-5 prose dark:prose-invert prose-zinc prose-sm prose-h1:text-sm">
{render_notes(@form[:content].value)} {render_content(@form[:content].value)}
</article> </article>
</.tabs_panel> </.tabs_panel>
<.tabs_panel active={@mode == "edit"} name="edit"> <.tabs_panel active={@mode == "edit"} name="edit">
@@ -156,8 +156,8 @@ defmodule MusicLibraryWeb.NotesComponent do
end end
end end
defp render_notes(notes) do defp render_content(content) do
(notes || "") content
|> Markdown.to_html() |> Markdown.to_html()
|> raw() |> raw()
end end