diff --git a/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala b/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala index 450b540f..9a9cd646 100644 --- a/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala +++ b/modules/backend/src/main/scala/docspell/backend/ops/OItem.scala @@ -302,13 +302,17 @@ object OItem { .map(AddResult.fromUpdate) def deleteItem(itemId: Ident, collective: Ident): F[Int] = - QItem.delete(store)(itemId, collective) + QItem + .delete(store)(itemId, collective) + .flatTap(_ => fts.removeItem(logger, itemId)) def getProposals(item: Ident, collective: Ident): F[MetaProposalList] = store.transact(QAttachment.getMetaProposals(item, collective)) def deleteAttachment(id: Ident, collective: Ident): F[Int] = - QAttachment.deleteSingleAttachment(store)(id, collective) + QAttachment + .deleteSingleAttachment(store)(id, collective) + .flatTap(_ => fts.removeAttachment(logger, id)) def setAttachmentName( attachId: Ident, diff --git a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala index b25cb1c9..703162cc 100644 --- a/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala +++ b/modules/fts-client/src/main/scala/docspell/ftsclient/FtsClient.scala @@ -87,6 +87,10 @@ trait FtsClient[F[_]] { ) ) + def removeItem(logger: Logger[F], itemId: Ident): F[Unit] + + def removeAttachment(logger: Logger[F], attachId: Ident): F[Unit] + /** Clears the index – removes everything. */ def clearAll(logger: Logger[F]): F[Unit] @@ -113,6 +117,12 @@ object FtsClient { def indexData(logger: Logger[F], data: Stream[F, TextData]): F[Unit] = logger.warn("Full-text search is disabled!") + def removeItem(logger: Logger[F], itemId: Ident): F[Unit] = + logger.warn("Full-text search is disabled!") + + def removeAttachment(logger: Logger[F], attachId: Ident): F[Unit] = + logger.warn("Full-text search is disabled!") + def clearAll(logger: Logger[F]): F[Unit] = logger.warn("Full-text search is disabled!") diff --git a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala index 4c43c18b..a950f1d4 100644 --- a/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala +++ b/modules/fts-solr/src/main/scala/docspell/ftssolr/SolrFtsClient.scala @@ -42,6 +42,14 @@ final class SolrFtsClient[F[_]: Effect]( } } yield ()).compile.drain + def removeItem(logger: Logger[F], itemId: Ident): F[Unit] = + logger.debug(s"Remove item '${itemId.id}' from index") *> + solrUpdate.delete(s"${Field.itemId.name}:${itemId.id}") + + def removeAttachment(logger: Logger[F], attachId: Ident): F[Unit] = + logger.debug(s"Remove attachment '${attachId.id}' from index") *> + solrUpdate.delete(s"${Field.attachmentId.name}:${attachId.id}") + def clearAll(logger: Logger[F]): F[Unit] = logger.info("Deleting complete full-text index!") *> solrUpdate.delete("*:*") diff --git a/modules/webapp/src/main/elm/Page/Home/View.elm b/modules/webapp/src/main/elm/Page/Home/View.elm index ab5f48fe..2c569d1a 100644 --- a/modules/webapp/src/main/elm/Page/Home/View.elm +++ b/modules/webapp/src/main/elm/Page/Home/View.elm @@ -146,7 +146,7 @@ viewSearchBar flags model = div [ classList [ ( "invisible hidden", not model.menuCollapsed ) - , ( "ui secondary menu container", True ) + , ( "ui secondary stackable menu container", True ) ] ] [ a