Implemented endpoint to delete multiple attachments

This commit is contained in:
Stefan Scheidewig
2021-04-15 18:05:01 +02:00
parent 93f772351a
commit fa34312020
4 changed files with 77 additions and 13 deletions

View File

@ -80,6 +80,7 @@ object RestServer {
"item" -> ItemRoutes(cfg, pools.blocker, restApp.backend, token),
"items" -> ItemMultiRoutes(restApp.backend, token),
"attachment" -> AttachmentRoutes(pools.blocker, restApp.backend, token),
"attachments" -> AttachmentMultiRoutes(restApp.backend, token),
"upload" -> UploadRoutes.secured(restApp.backend, cfg, token),
"checkfile" -> CheckFileRoutes.secured(restApp.backend, token),
"email/send" -> MailSendRoutes(restApp.backend, token),

View File

@ -0,0 +1,38 @@
package docspell.restserver.routes
import cats.effect.Effect
import cats.implicits._
import docspell.backend.BackendApp
import docspell.backend.auth.AuthToken
import docspell.restapi.model._
import docspell.restserver.conv.MultiIdSupport
import org.http4s.HttpRoutes
import org.http4s.circe.CirceEntityDecoder._
import org.http4s.circe.CirceEntityEncoder._
import org.http4s.dsl.Http4sDsl
object AttachmentMultiRoutes extends MultiIdSupport {
def apply[F[_]: Effect](
backend: BackendApp[F],
user: AuthToken
): HttpRoutes[F] = {
val dsl = new Http4sDsl[F] {}
import dsl._
HttpRoutes.of { case req @ POST -> Root / "delete" =>
for {
json <- req.as[IdList]
attachments <- readIds[F](json.ids)
n <- backend.item.deleteAttachmentMultiple(attachments, user.account.collective)
res = BasicResult(
n > 0,
if (n > 0) "Attachment(s) deleted" else "Attachment deletion failed."
)
resp <- Ok(res)
} yield resp
}
}
}