aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-10-01 12:50:54 -0700
committervlad <vlad@driver.xyz>2017-10-01 12:50:54 -0700
commitb5e0d5f91b52013bc11ef3ea586a54bb001577bc (patch)
tree58d6ca321e1f9176d02e24fbde6321bddadb21ee /src/main/scala/xyz/driver/pdsuicommon
parent46b354b6a49c0843fefc5794f2351f52b98102bd (diff)
downloadrest-query-b5e0d5f91b52013bc11ef3ea586a54bb001577bc.tar.gz
rest-query-b5e0d5f91b52013bc11ef3ea586a54bb001577bc.tar.bz2
rest-query-b5e0d5f91b52013bc11ef3ea586a54bb001577bc.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')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/db/SlickPostgresQueryBuilder.scala3
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala3
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala23
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/utils/CustomSwaggerJsonFormats.scala2
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] ->