mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-03-25 16:45:05 +00:00
Edit dates of multiple items
This commit is contained in:
parent
7ade7dd70b
commit
2e6026b817
@ -98,13 +98,17 @@ trait OItem[F[_]] {
|
||||
collective: Ident
|
||||
): F[AddResult]
|
||||
|
||||
def setItemDate(item: Ident, date: Option[Timestamp], collective: Ident): F[AddResult]
|
||||
|
||||
def setItemDueDate(
|
||||
item: Ident,
|
||||
def setItemDate(
|
||||
item: NonEmptyList[Ident],
|
||||
date: Option[Timestamp],
|
||||
collective: Ident
|
||||
): F[AddResult]
|
||||
): F[UpdateResult]
|
||||
|
||||
def setItemDueDate(
|
||||
item: NonEmptyList[Ident],
|
||||
date: Option[Timestamp],
|
||||
collective: Ident
|
||||
): F[UpdateResult]
|
||||
|
||||
def getProposals(item: Ident, collective: Ident): F[MetaProposalList]
|
||||
|
||||
@ -480,24 +484,24 @@ object OItem {
|
||||
.map(AddResult.fromUpdate)
|
||||
|
||||
def setItemDate(
|
||||
item: Ident,
|
||||
items: NonEmptyList[Ident],
|
||||
date: Option[Timestamp],
|
||||
collective: Ident
|
||||
): F[AddResult] =
|
||||
store
|
||||
.transact(RItem.updateDate(item, collective, date))
|
||||
.attempt
|
||||
.map(AddResult.fromUpdate)
|
||||
): F[UpdateResult] =
|
||||
UpdateResult.fromUpdate(
|
||||
store
|
||||
.transact(RItem.updateDate(items, collective, date))
|
||||
)
|
||||
|
||||
def setItemDueDate(
|
||||
item: Ident,
|
||||
items: NonEmptyList[Ident],
|
||||
date: Option[Timestamp],
|
||||
collective: Ident
|
||||
): F[AddResult] =
|
||||
store
|
||||
.transact(RItem.updateDueDate(item, collective, date))
|
||||
.attempt
|
||||
.map(AddResult.fromUpdate)
|
||||
): F[UpdateResult] =
|
||||
UpdateResult.fromUpdate(
|
||||
store
|
||||
.transact(RItem.updateDueDate(items, collective, date))
|
||||
)
|
||||
|
||||
def deleteItem(itemId: Ident, collective: Ident): F[Int] =
|
||||
QItem
|
||||
|
@ -1,5 +1,6 @@
|
||||
package docspell.joex.process
|
||||
|
||||
import cats.data.NonEmptyList
|
||||
import cats.effect.Sync
|
||||
import cats.implicits._
|
||||
|
||||
@ -88,7 +89,11 @@ object LinkProposal {
|
||||
val ts = Timestamp.from(ld.atStartOfDay(Timestamp.UTC))
|
||||
ctx.logger.debug(s"Updating item date ${value.id}") *>
|
||||
ctx.store.transact(
|
||||
RItem.updateDate(itemId, ctx.args.meta.collective, Some(ts))
|
||||
RItem.updateDate(
|
||||
NonEmptyList.of(itemId),
|
||||
ctx.args.meta.collective,
|
||||
Some(ts)
|
||||
)
|
||||
)
|
||||
case None =>
|
||||
ctx.logger.info(s"Cannot read value '${value.id}' into a date.") *>
|
||||
@ -100,7 +105,11 @@ object LinkProposal {
|
||||
val ts = Timestamp.from(ld.atStartOfDay(Timestamp.UTC))
|
||||
ctx.logger.debug(s"Updating item due-date suggestion ${value.id}") *>
|
||||
ctx.store.transact(
|
||||
RItem.updateDueDate(itemId, ctx.args.meta.collective, Some(ts))
|
||||
RItem.updateDueDate(
|
||||
NonEmptyList.of(itemId),
|
||||
ctx.args.meta.collective,
|
||||
Some(ts)
|
||||
)
|
||||
)
|
||||
case None =>
|
||||
ctx.logger.info(s"Cannot read value '${value.id}' into a date.") *>
|
||||
|
@ -102,6 +102,22 @@ object ItemMultiRoutes {
|
||||
resp <- Ok(Conversions.basicResult(res, "Direction updated"))
|
||||
} yield resp
|
||||
|
||||
case req @ PUT -> Root / "date" =>
|
||||
for {
|
||||
json <- req.as[ItemsAndDate]
|
||||
items <- readIds[F](json.items)
|
||||
res <- backend.item.setItemDate(items, json.date, user.account.collective)
|
||||
resp <- Ok(Conversions.basicResult(res, "Item date updated"))
|
||||
} yield resp
|
||||
|
||||
case req @ PUT -> Root / "duedate" =>
|
||||
for {
|
||||
json <- req.as[ItemsAndDate]
|
||||
items <- readIds[F](json.items)
|
||||
res <- backend.item.setItemDueDate(items, json.date, user.account.collective)
|
||||
resp <- Ok(Conversions.basicResult(res, "Item due date updated"))
|
||||
} yield resp
|
||||
|
||||
// case req @ PUT -> Root / "corrOrg" =>
|
||||
// for {
|
||||
// idref <- req.as[OptionalId]
|
||||
@ -130,22 +146,6 @@ object ItemMultiRoutes {
|
||||
// resp <- Ok(Conversions.basicResult(res, "Concerned equipment updated"))
|
||||
// } yield resp
|
||||
|
||||
// case req @ PUT -> Root / "duedate" =>
|
||||
// for {
|
||||
// date <- req.as[OptionalDate]
|
||||
// _ <- logger.fdebug(s"Setting item due date to ${date.date}")
|
||||
// res <- backend.item.setItemDueDate(id, date.date, user.account.collective)
|
||||
// resp <- Ok(Conversions.basicResult(res, "Item due date updated"))
|
||||
// } yield resp
|
||||
|
||||
// case req @ PUT -> Root / "date" =>
|
||||
// for {
|
||||
// date <- req.as[OptionalDate]
|
||||
// _ <- logger.fdebug(s"Setting item date to ${date.date}")
|
||||
// res <- backend.item.setItemDate(id, date.date, user.account.collective)
|
||||
// resp <- Ok(Conversions.basicResult(res, "Item date updated"))
|
||||
// } yield resp
|
||||
|
||||
// case req @ POST -> Root / "reprocess" =>
|
||||
// for {
|
||||
// data <- req.as[IdList]
|
||||
|
@ -264,7 +264,11 @@ object ItemRoutes {
|
||||
for {
|
||||
date <- req.as[OptionalDate]
|
||||
_ <- logger.fdebug(s"Setting item due date to ${date.date}")
|
||||
res <- backend.item.setItemDueDate(id, date.date, user.account.collective)
|
||||
res <- backend.item.setItemDueDate(
|
||||
NonEmptyList.of(id),
|
||||
date.date,
|
||||
user.account.collective
|
||||
)
|
||||
resp <- Ok(Conversions.basicResult(res, "Item due date updated"))
|
||||
} yield resp
|
||||
|
||||
@ -272,7 +276,11 @@ object ItemRoutes {
|
||||
for {
|
||||
date <- req.as[OptionalDate]
|
||||
_ <- logger.fdebug(s"Setting item date to ${date.date}")
|
||||
res <- backend.item.setItemDate(id, date.date, user.account.collective)
|
||||
res <- backend.item.setItemDate(
|
||||
NonEmptyList.of(id),
|
||||
date.date,
|
||||
user.account.collective
|
||||
)
|
||||
resp <- Ok(Conversions.basicResult(res, "Item date updated"))
|
||||
} yield resp
|
||||
|
||||
|
@ -285,18 +285,8 @@ object RItem {
|
||||
).update.run
|
||||
} yield n
|
||||
|
||||
def updateDate(itemId: Ident, coll: Ident, date: Option[Timestamp]): ConnectionIO[Int] =
|
||||
for {
|
||||
t <- currentTime
|
||||
n <- updateRow(
|
||||
table,
|
||||
and(id.is(itemId), cid.is(coll)),
|
||||
commas(itemDate.setTo(date), updated.setTo(t))
|
||||
).update.run
|
||||
} yield n
|
||||
|
||||
def updateDueDate(
|
||||
itemId: Ident,
|
||||
def updateDate(
|
||||
itemIds: NonEmptyList[Ident],
|
||||
coll: Ident,
|
||||
date: Option[Timestamp]
|
||||
): ConnectionIO[Int] =
|
||||
@ -304,7 +294,21 @@ object RItem {
|
||||
t <- currentTime
|
||||
n <- updateRow(
|
||||
table,
|
||||
and(id.is(itemId), cid.is(coll)),
|
||||
and(id.isIn(itemIds), cid.is(coll)),
|
||||
commas(itemDate.setTo(date), updated.setTo(t))
|
||||
).update.run
|
||||
} yield n
|
||||
|
||||
def updateDueDate(
|
||||
itemIds: NonEmptyList[Ident],
|
||||
coll: Ident,
|
||||
date: Option[Timestamp]
|
||||
): ConnectionIO[Int] =
|
||||
for {
|
||||
t <- currentTime
|
||||
n <- updateRow(
|
||||
table,
|
||||
and(id.isIn(itemIds), cid.is(coll)),
|
||||
commas(dueDate.setTo(date), updated.setTo(t))
|
||||
).update.run
|
||||
} yield n
|
||||
|
@ -81,8 +81,10 @@ module Api exposing
|
||||
, setConfirmed
|
||||
, setCorrOrg
|
||||
, setCorrPerson
|
||||
, setDateMultiple
|
||||
, setDirection
|
||||
, setDirectionMultiple
|
||||
, setDueDateMultiple
|
||||
, setFolder
|
||||
, setFolderMultiple
|
||||
, setItemDate
|
||||
@ -135,6 +137,7 @@ import Api.Model.ItemLightList exposing (ItemLightList)
|
||||
import Api.Model.ItemProposals exposing (ItemProposals)
|
||||
import Api.Model.ItemSearch exposing (ItemSearch)
|
||||
import Api.Model.ItemUploadMeta exposing (ItemUploadMeta)
|
||||
import Api.Model.ItemsAndDate exposing (ItemsAndDate)
|
||||
import Api.Model.ItemsAndDirection exposing (ItemsAndDirection)
|
||||
import Api.Model.ItemsAndName exposing (ItemsAndName)
|
||||
import Api.Model.ItemsAndRef exposing (ItemsAndRef)
|
||||
@ -1344,6 +1347,34 @@ setDirectionMultiple flags data receive =
|
||||
}
|
||||
|
||||
|
||||
setDateMultiple :
|
||||
Flags
|
||||
-> ItemsAndDate
|
||||
-> (Result Http.Error BasicResult -> msg)
|
||||
-> Cmd msg
|
||||
setDateMultiple flags data receive =
|
||||
Http2.authPut
|
||||
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/date"
|
||||
, account = getAccount flags
|
||||
, body = Http.jsonBody (Api.Model.ItemsAndDate.encode data)
|
||||
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
||||
}
|
||||
|
||||
|
||||
setDueDateMultiple :
|
||||
Flags
|
||||
-> ItemsAndDate
|
||||
-> (Result Http.Error BasicResult -> msg)
|
||||
-> Cmd msg
|
||||
setDueDateMultiple flags data receive =
|
||||
Http2.authPut
|
||||
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/duedate"
|
||||
, account = getAccount flags
|
||||
, body = Http.jsonBody (Api.Model.ItemsAndDate.encode data)
|
||||
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
||||
}
|
||||
|
||||
|
||||
|
||||
--- Item
|
||||
|
||||
|
@ -6,6 +6,7 @@ module Comp.ItemDetail.FormChange exposing
|
||||
import Api
|
||||
import Api.Model.BasicResult exposing (BasicResult)
|
||||
import Api.Model.IdName exposing (IdName)
|
||||
import Api.Model.ItemsAndDate exposing (ItemsAndDate)
|
||||
import Api.Model.ItemsAndDirection exposing (ItemsAndDirection)
|
||||
import Api.Model.ItemsAndName exposing (ItemsAndName)
|
||||
import Api.Model.ItemsAndRef exposing (ItemsAndRef)
|
||||
@ -71,5 +72,19 @@ multiUpdate flags ids change receive =
|
||||
in
|
||||
Api.setDirectionMultiple flags data receive
|
||||
|
||||
ItemDateChange date ->
|
||||
let
|
||||
data =
|
||||
ItemsAndDate items date
|
||||
in
|
||||
Api.setDateMultiple flags data receive
|
||||
|
||||
DueDateChange date ->
|
||||
let
|
||||
data =
|
||||
ItemsAndDate items date
|
||||
in
|
||||
Api.setDueDateMultiple flags data receive
|
||||
|
||||
_ ->
|
||||
Cmd.none
|
||||
|
Loading…
x
Reference in New Issue
Block a user