fix crash when updating references
This commit is contained in:
parent
425588a25f
commit
abeef833ff
3 changed files with 27 additions and 16 deletions
|
@ -25,11 +25,11 @@ defmodule Chiya.Notes.Note do
|
||||||
|
|
||||||
many_to_many :links_from, Chiya.Notes.Note,
|
many_to_many :links_from, Chiya.Notes.Note,
|
||||||
join_through: Chiya.Notes.NoteNote,
|
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,
|
many_to_many :links_to, Chiya.Notes.Note,
|
||||||
join_through: Chiya.Notes.NoteNote,
|
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,
|
many_to_many :tags, Chiya.Tags.Tag,
|
||||||
join_through: Chiya.Notes.NoteTag,
|
join_through: Chiya.Notes.NoteTag,
|
||||||
|
|
|
@ -76,16 +76,23 @@ defmodule Chiya.Notes.References do
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_references({:ok, note}, attrs) do
|
def update_references({:ok, note}, attrs) do
|
||||||
|
note = Chiya.Notes.preload_note(note)
|
||||||
|
|
||||||
new_reference_slugs = get_reference_ids(attrs["content"])
|
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)
|
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
|
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
|
references_to_remove = old_reference_slugs -- new_reference_slugs
|
||||||
|
Logger.info("References to remove: #{Enum.count(references_to_remove)}")
|
||||||
Logger.debug("References to add: #{Enum.count(references_to_add)}")
|
Logger.info(inspect(references_to_remove))
|
||||||
Logger.debug(inspect(references_to_add))
|
|
||||||
|
|
||||||
Logger.debug("References to remove: #{Enum.count(references_to_remove)}")
|
|
||||||
Logger.debug(inspect(references_to_remove))
|
|
||||||
|
|
||||||
add_note_links(note, references_to_add)
|
add_note_links(note, references_to_add)
|
||||||
remove_note_links(note, references_to_remove)
|
remove_note_links(note, references_to_remove)
|
||||||
|
@ -108,12 +115,16 @@ defmodule Chiya.Notes.References do
|
||||||
end
|
end
|
||||||
|
|
||||||
defp add_note_link(slug, origin_note, linked_note) do
|
defp add_note_link(slug, origin_note, linked_note) do
|
||||||
with attrs <- get_attrs(origin_note.id, linked_note.id),
|
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")
|
case Chiya.Notes.create_note_note(attrs) do
|
||||||
else
|
{:ok, _note_note} ->
|
||||||
error ->
|
Logger.info("Reference to '#{slug}' created")
|
||||||
Logger.warn(error)
|
|
||||||
|
{:error, changelog} ->
|
||||||
|
Logger.warn("Reference was not added.")
|
||||||
|
Logger.error(inspect(changelog))
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,8 @@ defmodule ChiyaWeb.NoteShowLive do
|
||||||
<:item title="Kind"><%= @note.kind %></:item>
|
<:item title="Kind"><%= @note.kind %></:item>
|
||||||
<:item title="Url"><%= @note.url %></:item>
|
<:item title="Url"><%= @note.url %></:item>
|
||||||
<:item title="Tags"><%= note_tags(@note.tags) %></:item>
|
<:item title="Tags"><%= note_tags(@note.tags) %></:item>
|
||||||
<:item title="Links outgoing"><%= note_links(@note.links_to) %></:item>
|
<:item title="Links outgoing"><%= note_links(@note.links_from) %></:item>
|
||||||
<:item title="Links incoming"><%= note_links(@note.links_from) %></:item>
|
<:item title="Links incoming"><%= note_links(@note.links_to) %></:item>
|
||||||
</.list>
|
</.list>
|
||||||
|
|
||||||
<.line />
|
<.line />
|
||||||
|
|
Loading…
Reference in a new issue