diff options
author | vlad <vlad@driver.xyz> | 2017-10-01 12:50:54 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-10-01 12:50:54 -0700 |
commit | b5e0d5f91b52013bc11ef3ea586a54bb001577bc (patch) | |
tree | 58d6ca321e1f9176d02e24fbde6321bddadb21ee /src/main/scala/xyz/driver/pdsuicommon | |
parent | 46b354b6a49c0843fefc5794f2351f52b98102bd (diff) | |
download | rest-query-0.5.1.tar.gz rest-query-0.5.1.tar.bz2 rest-query-0.5.1.zip |
Fixing IN in filters, Model from EVLS added to common, Reusing domain model labelsv0.5.1
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon')
4 files changed, 18 insertions, 13 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/SlickPostgresQueryBuilder.scala b/src/main/scala/xyz/driver/pdsuicommon/db/SlickPostgresQueryBuilder.scala index f882441..a56ab9a 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/db/SlickPostgresQueryBuilder.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/db/SlickPostgresQueryBuilder.scala @@ -2,8 +2,7 @@ package xyz.driver.pdsuicommon.db import java.time.{LocalDateTime, ZoneOffset} -import slick.driver.JdbcProfile -import slick.jdbc.GetResult +import slick.jdbc.{JdbcProfile, GetResult} import xyz.driver.core.database.SlickDal import xyz.driver.pdsuicommon.logging._ diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala index ab2757b..0daa84d 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala @@ -3,8 +3,7 @@ package xyz.driver.pdsuicommon.db import java.sql.PreparedStatement import java.time.LocalDateTime -import slick.driver.JdbcProfile -import slick.jdbc.{PositionedParameters, SQLActionBuilder, SetParameter} +import slick.jdbc.{JdbcProfile, PositionedParameters, SQLActionBuilder, SetParameter} import xyz.driver.pdsuicommon.db.Sorting.{Dimension, Sequential} import xyz.driver.pdsuicommon.db.SortingOrder.{Ascending, Descending} diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala index e0adeb8..e46e11c 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala @@ -15,10 +15,7 @@ object SearchFilterParser { private object BinaryAtomFromTuple { def unapply(input: (SearchFilterExpr.Dimension, (String, Any))): Option[SearchFilterExpr.Atom.Binary] = { val (dimensionName, (strOperation, value)) = input - val updatedValue = value match { - case s: String => s.safeTrim - case a => a - } + val updatedValue = trimIfString(value) parseOperation(strOperation.toLowerCase).map { op => SearchFilterExpr.Atom.Binary(dimensionName, op, updatedValue.asInstanceOf[AnyRef]) @@ -30,15 +27,24 @@ object SearchFilterParser { // Compiler warning: unchecked since it is eliminated by erasure, if we user Seq[String] def unapply(input: (SearchFilterExpr.Dimension, (String, Seq[_]))): Option[SearchFilterExpr.Atom.NAry] = { val (dimensionName, (strOperation, xs)) = input + val updatedValues = xs.map(trimIfString) + if (strOperation.toLowerCase == "in") { - val values = xs.asInstanceOf[Seq[String]].map(_.safeTrim) - Some(SearchFilterExpr.Atom.NAry(dimensionName, SearchFilterNAryOperation.In, values)) + Some( + SearchFilterExpr.Atom + .NAry(dimensionName, SearchFilterNAryOperation.In, updatedValues.map(_.asInstanceOf[AnyRef]))) } else { None } } } + private def trimIfString(value: Any) = + value match { + case s: String => s.safeTrim + case a => a + } + private val operationsMapping = { import xyz.driver.pdsuicommon.db.SearchFilterBinaryOperation._ @@ -96,7 +102,7 @@ object SearchFilterParser { private val nAryValueParser: Parser[String] = P(CharPred(_ != ',').rep(min = 1).!) - private val longParser: Parser[Long] = P(CharIn('0' to '9').rep(1).!.map(_.toLong)) + private val longParser: Parser[Long] = P(CharIn('0' to '9').rep(min = 1).!.map(_.toLong)) private val binaryAtomParser: Parser[SearchFilterExpr.Atom.Binary] = P( dimensionParser ~ whitespaceParser ~ ( @@ -109,7 +115,8 @@ object SearchFilterParser { private val nAryAtomParser: Parser[SearchFilterExpr.Atom.NAry] = P( dimensionParser ~ whitespaceParser ~ ( - naryOperatorParser ~/ whitespaceParser ~/ nAryValueParser.!.rep(min = 1, sep = ",") + naryOperatorParser ~ whitespaceParser ~ + (longParser.rep(min = 1, sep = ",") | nAryValueParser.!.rep(min = 1, sep = ",")) ) ~ End ).map { case NAryAtomFromTuple(atom) => atom diff --git a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala index 4ecf915..a3f48d1 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala @@ -89,7 +89,7 @@ object CustomSwaggerJsonFormats { classOf[DocumentHistory.State] -> documenthistory.documentStateFormat.write(rep.DocumentGen.nextDocumentHistoryState()), classOf[ProviderType] -> - providertype.providerTypeFormat.write(rep.ProviderTypeGen.nextProviderType()), + providertype.providerTypeFormat.write(rep.MedicalRecordGen.nextProviderType()), classOf[TextJson[List[MedicalRecord.Meta]]] -> record.recordMetaFormat.write(rep.MedicalRecordGen.nextMedicalRecordMetasJson()), classOf[MedicalRecord] -> |