From 892b3cdcfd24d3667bc484123fdbef35b61388bf Mon Sep 17 00:00:00 2001 From: eikek Date: Sun, 20 Mar 2022 11:41:01 +0100 Subject: [PATCH] Return results for empty trash task --- .../joex/emptytrash/EmptyTrashTask.scala | 4 ++-- .../docspell/joex/emptytrash/Result.scala | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 modules/joex/src/main/scala/docspell/joex/emptytrash/Result.scala diff --git a/modules/joex/src/main/scala/docspell/joex/emptytrash/EmptyTrashTask.scala b/modules/joex/src/main/scala/docspell/joex/emptytrash/EmptyTrashTask.scala index 3d50a0ca..177e961b 100644 --- a/modules/joex/src/main/scala/docspell/joex/emptytrash/EmptyTrashTask.scala +++ b/modules/joex/src/main/scala/docspell/joex/emptytrash/EmptyTrashTask.scala @@ -39,7 +39,7 @@ object EmptyTrashTask { def apply[F[_]: Async]( itemOps: OItem[F], itemSearchOps: OItemSearch[F] - ): Task[F, Args, Unit] = + ): Task[F, Args, Result] = Task { ctx => for { now <- Timestamp.current[F] @@ -49,7 +49,7 @@ object EmptyTrashTask { ) nDeleted <- deleteAll(ctx.args, maxDate, itemOps, itemSearchOps, ctx) _ <- ctx.logger.info(s"Finished deleting $nDeleted items") - } yield () + } yield Result(nDeleted) } private def deleteAll[F[_]: Async]( diff --git a/modules/joex/src/main/scala/docspell/joex/emptytrash/Result.scala b/modules/joex/src/main/scala/docspell/joex/emptytrash/Result.scala new file mode 100644 index 00000000..618d7604 --- /dev/null +++ b/modules/joex/src/main/scala/docspell/joex/emptytrash/Result.scala @@ -0,0 +1,24 @@ +/* + * Copyright 2020 Eike K. & Contributors + * + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +package docspell.joex.emptytrash + +import docspell.scheduler.JobTaskResultEncoder + +import io.circe.Encoder +import io.circe.generic.semiauto.deriveEncoder + +final case class Result(removed: Int) + +object Result { + implicit val jsonEncoder: Encoder[Result] = + deriveEncoder + + implicit val jobTaskResultEncoder: JobTaskResultEncoder[Result] = + JobTaskResultEncoder.fromJson[Result].withMessage { result => + s"Deleted ${result.removed} items." + } +}