package docspell.joex.process

import cats.effect.Sync
import cats.implicits._

import docspell.common._
import docspell.joex.scheduler.Task
import docspell.store.records._

/** Saves the proposals in the database
  */
object SaveProposals {

  def apply[F[_]: Sync](data: ItemData): Task[F, ProcessItemArgs, ItemData] =
    Task { ctx =>
      ctx.logger.info("Storing proposals") *>
        data.metas
          .traverse(rm =>
            ctx.logger.debug(s"Storing attachment proposals: ${rm.proposals}") *>
              ctx.store.transact(RAttachmentMeta.updateProposals(rm.id, rm.proposals))
          )
          .map(_ => data)
    }
}