From e9f8fbb7f8f379e6885331c94364f6e7d41ffbb2 Mon Sep 17 00:00:00 2001 From: Kseniya Tomskikh Date: Mon, 23 Oct 2017 15:49:45 +0700 Subject: Added custom set parameters to slick qb --- .../scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala index dc03a52..7d2f085 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/db/SlickQueryBuilder.scala @@ -6,6 +6,7 @@ import java.time.LocalDateTime import slick.jdbc.{JdbcProfile, PositionedParameters, SQLActionBuilder, SetParameter} import xyz.driver.pdsuicommon.db.Sorting.{Dimension, Sequential} import xyz.driver.pdsuicommon.db.SortingOrder.{Ascending, Descending} +import xyz.driver.pdsuicommon.domain.{LongId, StringId, UuidId} import scala.concurrent.{ExecutionContext, Future} @@ -44,6 +45,18 @@ object SlickQueryBuilder { pp.setObject(v, JDBCType.BINARY.getVendorTypeNumber) } } + + implicit def setLongIdQueryParameter[T]: SetParameter[LongId[T]] = SetParameter[LongId[T]] { (v, pp) => + pp.setLong(v.id) + } + + implicit def setStringIdQueryParameter[T]: SetParameter[StringId[T]] = SetParameter[StringId[T]] { (v, pp) => + pp.setString(v.id) + } + + implicit def setUuidIdQueryParameter[T]: SetParameter[UuidId[T]] = SetParameter[UuidId[T]] { (v, pp) => + pp.setObject(v.id, JDBCType.BINARY.getVendorTypeNumber) + } } final case class SlickTableLink(keyColumnName: String, foreignTableName: String, foreignKeyColumnName: String) -- cgit v1.2.3 From b99235a22bfabeb175c297660d9dccc27c7b4daf Mon Sep 17 00:00:00 2001 From: Kseniya Tomskikh Date: Mon, 23 Oct 2017 19:40:57 +0700 Subject: Fixed update delivery method --- .../pdsuidomain/formats/json/sprayformats/intervention.scala | 5 +++-- .../formats/json/sprayformats/InterventionFormatSuite.scala | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala index e557e47..fccdda4 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/intervention.scala @@ -99,7 +99,8 @@ object intervention { val deliveryMethod = fields .get("deliveryMethod") - .map(_.convertTo[String]) + .map(_.convertTo[Option[String]]) + .getOrElse(orig.intervention.deliveryMethod) val origIntervention = orig.intervention val arms = fields @@ -112,7 +113,7 @@ object intervention { typeId = typeId.orElse(origIntervention.typeId), dosage = dosage.getOrElse(origIntervention.dosage), isActive = isActive.getOrElse(origIntervention.isActive), - deliveryMethod = deliveryMethod.orElse(origIntervention.deliveryMethod) + deliveryMethod = deliveryMethod ), arms = arms.getOrElse(orig.arms) ) diff --git a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/InterventionFormatSuite.scala b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/InterventionFormatSuite.scala index 4532da4..edce9c1 100644 --- a/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/InterventionFormatSuite.scala +++ b/src/test/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/InterventionFormatSuite.scala @@ -19,7 +19,7 @@ class InterventionFormatSuite extends FlatSpec with Matchers { dosage = "", originalDosage = "", isActive = true, - deliveryMethod = Some("pill") + deliveryMethod = Some("Inhalation") ) val arms = List( InterventionArm(interventionId = intervention.id, armId = LongId(20)), @@ -34,11 +34,11 @@ class InterventionFormatSuite extends FlatSpec with Matchers { writtenJson should be( """{"id":1,"name":"intervention name","typeId":10,"dosage":"","isActive":true,"arms":[20,21,22], - "trialId":"NCT000001","deliveryMethod":"pill","originalName":"orig name","originalDosage":"","originalType":"orig type"}""".parseJson) + "trialId":"NCT000001","deliveryMethod":"Inhalation","originalName":"orig name","originalDosage":"","originalType":"orig type"}""".parseJson) val createInterventionJson = """{"id":1,"name":"intervention name","typeId":10,"dosage":"","isActive":true,"arms":[20,21,22], - "trialId":"NCT000001","deliveryMethod":"pill"}""".parseJson + "trialId":"NCT000001","deliveryMethod":"Inhalation"}""".parseJson val parsedCreateIntervention = interventionFormat.read(createInterventionJson) val expectedCreateIntervention = parsedCreateIntervention.copy( intervention = intervention.copy(id = LongId(0), originalType = None, originalName = "intervention name"), @@ -46,9 +46,9 @@ class InterventionFormatSuite extends FlatSpec with Matchers { ) parsedCreateIntervention should be(expectedCreateIntervention) - val updateInterventionJson = """{"dosage":"descr","arms":[21,22]}""".parseJson + val updateInterventionJson = """{"dosage":"descr","deliveryMethod":null,"arms":[21,22]}""".parseJson val expectedUpdatedIntervention = orig.copy( - intervention = intervention.copy(dosage = "descr"), + intervention = intervention.copy(dosage = "descr", deliveryMethod = None), arms = List( InterventionArm(interventionId = intervention.id, armId = LongId(21)), InterventionArm(interventionId = intervention.id, armId = LongId(22)) -- cgit v1.2.3 From cb76f20dcd9a9519bffb3814a03c18c424f5e6a0 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Fri, 20 Oct 2017 17:44:51 -0700 Subject: Add PreCleaning format --- .../scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala index 09517e6..d00aa14 100644 --- a/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/sprayformats/record.scala @@ -15,6 +15,7 @@ object record { import common._ implicit val recordStatusFormat = new EnumJsonFormat[Status]( + "PreCleaning" -> Status.PreCleaning, "Unprocessed" -> Status.Unprocessed, "PreOrganized" -> Status.PreOrganized, "New" -> Status.New, -- cgit v1.2.3 From 5a6b7a7a3013035d692eb6d8ac369c1eb6dac0f3 Mon Sep 17 00:00:00 2001 From: vlad Date: Mon, 23 Oct 2017 17:49:18 -0700 Subject: Support for `noteq` for filters on numbers --- src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala index 85e9149..41533fe 100644 --- a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala +++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala @@ -79,7 +79,7 @@ object SearchFilterParser { } private val numericOperatorParser: Parser[String] = { - P(IgnoreCase("eq") | ((IgnoreCase("gt") | IgnoreCase("lt")) ~ IgnoreCase("eq").?)).! + P(IgnoreCase("eq") | IgnoreCase("noteq") | ((IgnoreCase("gt") | IgnoreCase("lt")) ~ IgnoreCase("eq").?)).! } private val naryOperatorParser: Parser[String] = P(IgnoreCase("in")).! -- cgit v1.2.3