mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-27 13:47:58 +01:00
copy comments when images are merged
This commit is contained in:
parent
3cbd57ba7c
commit
878b923a20
3 changed files with 24 additions and 1 deletions
|
@ -162,6 +162,14 @@ defmodule Philomena.Comments do
|
|||
|> Repo.update()
|
||||
end
|
||||
|
||||
def migrate_comments(image, duplicate_of_image) do
|
||||
Comment
|
||||
|> where(image_id: ^image.id)
|
||||
|> Repo.update_all(set: [image_id: duplicate_of_image.id])
|
||||
|
||||
reindex_comments(duplicate_of_image)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns an `%Ecto.Changeset{}` for tracking comment changes.
|
||||
|
||||
|
@ -187,6 +195,17 @@ defmodule Philomena.Comments do
|
|||
comment
|
||||
end
|
||||
|
||||
def reindex_comments(image) do
|
||||
spawn fn ->
|
||||
Comment
|
||||
|> preload(^indexing_preloads())
|
||||
|> where(image_id: ^image.id)
|
||||
|> Comment.reindex()
|
||||
end
|
||||
|
||||
image
|
||||
end
|
||||
|
||||
def indexing_preloads do
|
||||
[:user, image: :tags]
|
||||
end
|
||||
|
|
|
@ -20,6 +20,7 @@ defmodule Philomena.Images do
|
|||
alias Philomena.Notifications
|
||||
alias Philomena.Interactions
|
||||
alias Philomena.Reports.Report
|
||||
alias Philomena.Comments
|
||||
|
||||
@doc """
|
||||
Gets a single image.
|
||||
|
@ -321,6 +322,7 @@ defmodule Philomena.Images do
|
|||
case result do
|
||||
{:ok, changes} ->
|
||||
tags = Tags.copy_tags(image, duplicate_of_image)
|
||||
Comments.migrate_comments(image, duplicate_of_image)
|
||||
Interactions.migrate_interactions(image, duplicate_of_image)
|
||||
|
||||
{:ok, %{changes | tags: changes.tags ++ tags}}
|
||||
|
|
|
@ -3,6 +3,7 @@ defmodule PhilomenaWeb.Image.TagController do
|
|||
|
||||
alias Philomena.TagChanges.TagChange
|
||||
alias Philomena.UserStatistics
|
||||
alias Philomena.Comments
|
||||
alias Philomena.Images.Image
|
||||
alias Philomena.Images
|
||||
alias Philomena.Tags
|
||||
|
@ -21,6 +22,7 @@ defmodule PhilomenaWeb.Image.TagController do
|
|||
|
||||
case Images.update_tags(image, attributes, image_params) do
|
||||
{:ok, %{image: {image, added_tags, removed_tags}}} ->
|
||||
Comments.reindex_comments(image)
|
||||
Images.reindex_image(image)
|
||||
Tags.reindex_tags(added_tags ++ removed_tags)
|
||||
|
||||
|
@ -50,4 +52,4 @@ defmodule PhilomenaWeb.Image.TagController do
|
|||
|> render("_tags.html", layout: false, tag_change_count: 0, image: image, changeset: changeset)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue