diff --git a/lib/chiya/notes/note.ex b/lib/chiya/notes/note.ex index 184a1c3..e7eda5f 100644 --- a/lib/chiya/notes/note.ex +++ b/lib/chiya/notes/note.ex @@ -25,11 +25,11 @@ defmodule Chiya.Notes.Note do many_to_many :links_from, Chiya.Notes.Note, join_through: Chiya.Notes.NoteNote, - join_keys: [target_id: :id, source_id: :id] + join_keys: [source_id: :id, target_id: :id] many_to_many :links_to, Chiya.Notes.Note, join_through: Chiya.Notes.NoteNote, - join_keys: [source_id: :id, target_id: :id] + join_keys: [target_id: :id, source_id: :id] many_to_many :tags, Chiya.Tags.Tag, join_through: Chiya.Notes.NoteTag, diff --git a/lib/chiya/notes/references.ex b/lib/chiya/notes/references.ex index 3b3d9c0..fabe1b5 100644 --- a/lib/chiya/notes/references.ex +++ b/lib/chiya/notes/references.ex @@ -76,16 +76,23 @@ defmodule Chiya.Notes.References do end def update_references({:ok, note}, attrs) do + note = Chiya.Notes.preload_note(note) + new_reference_slugs = get_reference_ids(attrs["content"]) + Logger.info("New references") + Logger.info(inspect(new_reference_slugs)) + old_reference_slugs = Enum.map(note.links_from, fn n -> n.slug end) + Logger.info("Old references") + Logger.info(inspect(old_reference_slugs)) + references_to_add = new_reference_slugs -- old_reference_slugs + Logger.info("References to add: #{Enum.count(references_to_add)}") + Logger.info(inspect(references_to_add)) + references_to_remove = old_reference_slugs -- new_reference_slugs - - Logger.debug("References to add: #{Enum.count(references_to_add)}") - Logger.debug(inspect(references_to_add)) - - Logger.debug("References to remove: #{Enum.count(references_to_remove)}") - Logger.debug(inspect(references_to_remove)) + Logger.info("References to remove: #{Enum.count(references_to_remove)}") + Logger.info(inspect(references_to_remove)) add_note_links(note, references_to_add) remove_note_links(note, references_to_remove) @@ -108,12 +115,16 @@ defmodule Chiya.Notes.References do end defp add_note_link(slug, origin_note, linked_note) do - with attrs <- get_attrs(origin_note.id, linked_note.id), - {:ok, _note_note} <- Chiya.Notes.create_note_note(attrs) do - Logger.info("Reference to '#{slug}' created") - else - error -> - Logger.warn(error) + attrs = get_attrs(origin_note.id, linked_note.id) + + case Chiya.Notes.create_note_note(attrs) do + {:ok, _note_note} -> + Logger.info("Reference to '#{slug}' created") + + {:error, changelog} -> + Logger.warn("Reference was not added.") + Logger.error(inspect(changelog)) + end end diff --git a/lib/chiya_web/live/note_show_live.ex b/lib/chiya_web/live/note_show_live.ex index c12688b..c14909a 100644 --- a/lib/chiya_web/live/note_show_live.ex +++ b/lib/chiya_web/live/note_show_live.ex @@ -36,8 +36,8 @@ defmodule ChiyaWeb.NoteShowLive do <:item title="Kind"><%= @note.kind %> <:item title="Url"><%= @note.url %> <:item title="Tags"><%= note_tags(@note.tags) %> - <:item title="Links outgoing"><%= note_links(@note.links_to) %> - <:item title="Links incoming"><%= note_links(@note.links_from) %> + <:item title="Links outgoing"><%= note_links(@note.links_from) %> + <:item title="Links incoming"><%= note_links(@note.links_to) %> <.line />