diff --git a/modules/common/src/main/scala/docspell/common/ItemState.scala b/modules/common/src/main/scala/docspell/common/ItemState.scala index aa3ede41..a839476f 100644 --- a/modules/common/src/main/scala/docspell/common/ItemState.scala +++ b/modules/common/src/main/scala/docspell/common/ItemState.scala @@ -23,6 +23,11 @@ object ItemState { case object Created extends ItemState case object Confirmed extends ItemState + def premature: ItemState = Premature + def processing: ItemState = Processing + def created: ItemState = Created + def confirmed: ItemState = Confirmed + def fromString(str: String): Either[String, ItemState] = str.toLowerCase match { case "premature" => Right(Premature) diff --git a/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala b/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala index 570fc659..6cff49f7 100644 --- a/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala +++ b/modules/joex/src/main/scala/docspell/joex/analysis/RegexNerFile.scala @@ -157,8 +157,9 @@ object RegexNerFile { .reduce(_ ++ fr"UNION ALL" ++ _) selectSimple(fr"MAX(t)", fr"(" ++ sql ++ fr") as x", Fragment.empty) - .query[Timestamp] + .query[Option[Timestamp]] .option + .map(_.flatten) } } } diff --git a/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala b/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala index ebb0894a..6864b390 100644 --- a/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala +++ b/modules/joex/src/main/scala/docspell/joex/process/TextAnalysis.scala @@ -98,11 +98,14 @@ object TextAnalysis { ctx: Context[F, Args], cfg: Config.TextAnalysis ): OptionT[F, Ident] = - if (cfg.classification.enabled) - OptionT(ctx.store.transact(RClassifierSetting.findById(ctx.args.meta.collective))) - .filter(_.enabled) - .mapFilter(_.fileId) - else - OptionT.none + (if (cfg.classification.enabled) + OptionT(ctx.store.transact(RClassifierSetting.findById(ctx.args.meta.collective))) + .filter(_.enabled) + .mapFilter(_.fileId) + else + OptionT.none[F, Ident]).orElse( + OptionT.liftF(ctx.logger.info("Classification is disabled.")) *> OptionT + .none[F, Ident] + ) } diff --git a/modules/store/src/main/scala/docspell/store/queries/QItem.scala b/modules/store/src/main/scala/docspell/store/queries/QItem.scala index d3d2653e..cef52954 100644 --- a/modules/store/src/main/scala/docspell/store/queries/QItem.scala +++ b/modules/store/src/main/scala/docspell/store/queries/QItem.scala @@ -621,8 +621,14 @@ object QItem { collective: Ident, chunkSize: Int ): Stream[ConnectionIO, Ident] = { - val cols = Seq(RItem.Columns.id) - (selectSimple(cols, RItem.table, RItem.Columns.cid.is(collective)) ++ + val cols = Seq(RItem.Columns.id) + val iColl = RItem.Columns.cid + val iState = RItem.Columns.state + (selectSimple( + cols, + RItem.table, + and(iColl.is(collective), iState.is(ItemState.confirmed)) + ) ++ orderBy(RItem.Columns.created.desc)) .query[Ident] .streamWithChunkSize(chunkSize)