Fix reprocessing to lookup the last used language

This commit is contained in:
eikek 2021-11-20 01:34:16 +01:00
parent 79c64f957d
commit 20fc9955ba
2 changed files with 17 additions and 4 deletions

View File

@ -22,6 +22,7 @@ import docspell.store.records.RAttachment
import docspell.store.records.RAttachmentSource
import docspell.store.records.RCollective
import docspell.store.records.RItem
import docspell.store.queries.QItem
object ReProcessItem {
type Args = ReProcessItemArgs
@ -131,10 +132,13 @@ object ReProcessItem {
def getLanguage[F[_]: Sync]: Task[F, Args, Language] =
Task { ctx =>
(for {
coll <- OptionT(ctx.store.transact(RCollective.findByItem(ctx.args.itemId)))
lang = coll.language
} yield lang).getOrElse(Language.German)
val lang1 = OptionT(
ctx.store.transact(QItem.getItemLanguage(ctx.args.itemId)).map(_.headOption)
)
val lang2 = OptionT(ctx.store.transact(RCollective.findByItem(ctx.args.itemId)))
.map(_.language)
lang1.orElse(lang2).getOrElse(Language.German)
}
def isLastRetry[F[_]: Sync]: Task[F, Args, Boolean] =

View File

@ -714,4 +714,13 @@ object QItem {
txt = texts.map(_._1).mkString(pageSep)
} yield TextAndTag(itemId, txt, tag)
/** Gets the language of the first attachment of the given item. */
def getItemLanguage(itemId: Ident): ConnectionIO[List[Language]] =
Select(
select(m.language),
from(m)
.innerJoin(a, a.id === m.id)
.innerJoin(i, i.id === a.itemId),
i.id === itemId
).orderBy(a.position.asc).build.query[Language].to[List]
}