From bb744668caaa3d2c63230ba5102a85fa3ba882bc Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Sun, 24 Jan 2021 23:24:33 +0100 Subject: [PATCH 1/2] Remove unused code --- project/Dependencies.scala | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 7f494afc..c5bbc3f9 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -12,7 +12,6 @@ object Dependencies { val ClipboardJsVersion = "2.0.6" val DoobieVersion = "0.10.0" val EmilVersion = "0.7.1" - val FastparseVersion = "2.1.3" val FlexmarkVersion = "0.62.2" val FlywayVersion = "7.5.1" val Fs2Version = "2.5.0" @@ -113,7 +112,7 @@ object Dependencies { "com.github.eikek" %% "emil-doobie" % EmilVersion ) val emilTnef = Seq( - "com.github.eikek" %% "emil-tnef" % EmilVersion excludeAll( + ("com.github.eikek" %% "emil-tnef" % EmilVersion).excludeAll( ExclusionRule("org.apache.poi") ) ) @@ -214,10 +213,6 @@ object Dependencies { "com.github.pureconfig" %% "pureconfig" % PureConfigVersion ) - val fastparse = Seq( - "com.lihaoyi" %% "fastparse" % FastparseVersion - ) - // https://github.com/h2database/h2database // MPL 2.0 or EPL 1.0 val h2 = Seq( From 394aeeccb68782108d5867fd6e6464ac0fbd3a08 Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Mon, 25 Jan 2021 00:16:59 +0100 Subject: [PATCH 2/2] Introduce a sql literal and constants in query builder The h2 jdbc driver could not translate the union query in QCollective when the `kind` was set via a constant value. Using literals works here. Renamed the corresponding elements in the query builder. --- .../store/src/main/scala/docspell/store/qb/DSL.scala | 9 ++++++--- .../src/main/scala/docspell/store/qb/SelectExpr.scala | 9 +++++++-- .../docspell/store/qb/impl/SelectExprBuilder.scala | 5 ++++- .../scala/docspell/store/queries/QCollective.scala | 6 +++--- .../src/main/scala/docspell/store/queries/QItem.scala | 10 +++++----- .../src/main/scala/docspell/store/queries/QJob.scala | 4 ++-- 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/modules/store/src/main/scala/docspell/store/qb/DSL.scala b/modules/store/src/main/scala/docspell/store/qb/DSL.scala index b3df71dd..e90439bf 100644 --- a/modules/store/src/main/scala/docspell/store/qb/DSL.scala +++ b/modules/store/src/main/scala/docspell/store/qb/DSL.scala @@ -101,8 +101,11 @@ trait DSL extends DoobieMeta { def concat(expr: SelectExpr, exprs: SelectExpr*): DBFunction = DBFunction.Concat(Nel.of(expr, exprs: _*)) - def lit[A](value: A)(implicit P: Put[A]): SelectExpr.SelectLit[A] = - SelectExpr.SelectLit(value, None) + def const[A](value: A)(implicit P: Put[A]): SelectExpr.SelectConstant[A] = + SelectExpr.SelectConstant(value, None) + + def lit(value: String): SelectExpr.SelectLiteral = + SelectExpr.SelectLiteral(value, None) def plus(left: SelectExpr, right: SelectExpr): DBFunction = DBFunction.Calc(DBFunction.Operator.Plus, left, right) @@ -291,7 +294,7 @@ trait DSL extends DoobieMeta { DBFunction.Calc( DBFunction.Operator.Minus, SelectExpr.SelectFun(dbf, None), - SelectExpr.SelectLit(value, None) + SelectExpr.SelectConstant(value, None) ) } } diff --git a/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala b/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala index ba029f5c..6ab371b2 100644 --- a/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala +++ b/modules/store/src/main/scala/docspell/store/qb/SelectExpr.scala @@ -18,9 +18,14 @@ object SelectExpr { copy(alias = Some(a)) } - case class SelectLit[A](value: A, alias: Option[String])(implicit val P: Put[A]) + case class SelectConstant[A](value: A, alias: Option[String])(implicit val P: Put[A]) extends SelectExpr { - def as(a: String): SelectLit[A] = + def as(a: String): SelectConstant[A] = + copy(alias = Some(a)) + } + + case class SelectLiteral(value: String, alias: Option[String]) extends SelectExpr { + def as(a: String): SelectLiteral = copy(alias = Some(a)) } diff --git a/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala b/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala index c3b5daab..30cfe8f7 100644 --- a/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala +++ b/modules/store/src/main/scala/docspell/store/qb/impl/SelectExprBuilder.scala @@ -12,9 +12,12 @@ object SelectExprBuilder extends CommonBuilder { case SelectExpr.SelectColumn(col, alias) => column(col) ++ appendAs(alias) - case s @ SelectExpr.SelectLit(value, aliasOpt) => + case s @ SelectExpr.SelectConstant(value, aliasOpt) => ConditionBuilder.buildValue(value)(s.P) ++ appendAs(aliasOpt) + case SelectExpr.SelectLiteral(value, alias) => + Fragment.const(value) ++ appendAs(alias) + case SelectExpr.SelectFun(fun, alias) => DBFunctionBuilder.build(fun) ++ appendAs(alias) diff --git a/modules/store/src/main/scala/docspell/store/queries/QCollective.scala b/modules/store/src/main/scala/docspell/store/queries/QCollective.scala index 84caa840..15e600dc 100644 --- a/modules/store/src/main/scala/docspell/store/queries/QCollective.scala +++ b/modules/store/src/main/scala/docspell/store/queries/QCollective.scala @@ -28,17 +28,17 @@ object QCollective { val created = Column[Timestamp]("created", TableDef("")) union( Select( - select(ro.name.s, lit(1).as("kind"), ro.created.as(created)), + select(ro.name.s, lit("1").as("kind"), ro.created.as(created)), from(ro), ro.cid === collective ), Select( - select(rp.name.s, lit(2).as("kind"), rp.created.as(created)), + select(rp.name.s, lit("2").as("kind"), rp.created.as(created)), from(rp), rp.cid === collective ), Select( - select(re.name.s, lit(3).as("kind"), re.created.as(created)), + select(re.name.s, lit("3").as("kind"), re.created.as(created)), from(re), re.cid === collective ) 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 cae01000..751d5706 100644 --- a/modules/store/src/main/scala/docspell/store/queries/QItem.scala +++ b/modules/store/src/main/scala/docspell/store/queries/QItem.scala @@ -138,7 +138,7 @@ object QItem { i.source.s, i.incoming.s, i.created.s, - coalesce(Attachs.num.s, lit(0)).s, + coalesce(Attachs.num.s, const(0)).s, org.oid.s, org.name.s, pers0.pid.s, @@ -302,10 +302,10 @@ object QItem { val basicFields = Nel.of( count(i.id).as("fc"), - lit(0).as("favg"), - lit(0).as("fsum"), - lit(0).as("fmax"), - lit(0).as("fmin") + const(0).as("favg"), + const(0).as("fsum"), + const(0).as("fmax"), + const(0).as("fmin") ) val valueNum = cast(cv.value.s, "decimal").s val numericFields = Nel.of( diff --git a/modules/store/src/main/scala/docspell/store/queries/QJob.scala b/modules/store/src/main/scala/docspell/store/queries/QJob.scala index 1d7b4c3e..b120b0e0 100644 --- a/modules/store/src/main/scala/docspell/store/queries/QJob.scala +++ b/modules/store/src/main/scala/docspell/store/queries/QJob.scala @@ -118,8 +118,8 @@ object QJob { private def stuckTriggerValue(t: RJob.Table, initialPause: Duration, now: Timestamp) = plus( - coalesce(t.startedmillis.s, lit(now.toMillis)).s, - mult(power(2, t.retries.s).s, lit(initialPause.millis)).s + coalesce(t.startedmillis.s, const(now.toMillis)).s, + mult(power(2, t.retries.s).s, const(initialPause.millis)).s ) def selectNextJob(