From f771f4a90f3affbcd3ebe98683b95eb7dcf0ec03 Mon Sep 17 00:00:00 2001 From: "byte[]" Date: Mon, 26 Oct 2020 21:58:58 -0400 Subject: [PATCH] remove images from galleries when they are hidden (derpibooru/philomena#219) --- lib/philomena/images.ex | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/philomena/images.ex b/lib/philomena/images.ex index e0c86189..e7e1141f 100644 --- a/lib/philomena/images.ex +++ b/lib/philomena/images.ex @@ -27,6 +27,8 @@ defmodule Philomena.Images do alias Philomena.Reports alias Philomena.Reports.Report alias Philomena.Comments + alias Philomena.Galleries.Gallery + alias Philomena.Galleries.Interaction @doc """ Gets a single image. @@ -422,9 +424,18 @@ defmodule Philomena.Images do |> select([r], r.id) |> update(set: [open: false, state: "closed", admin_id: ^user.id]) + galleries = + Gallery + |> join(:inner, [g], gi in assoc(g, :interactions), on: gi.image_id == ^image.id) + |> update(inc: [image_count: -1]) + + gallery_interactions = where(Interaction, image_id: ^image.id) + multi |> Multi.update(:image, changeset) |> Multi.update_all(:reports, reports, []) + |> Multi.update_all(:galleries, galleries, []) + |> Multi.delete_all(:gallery_interactions, gallery_interactions, []) |> Multi.run(:tags, fn repo, %{image: image} -> image = Repo.preload(image, :tags, force: true)