aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtRand <arand@soe.ucsc.edu>2018-02-08 14:24:46 -0800
committerArtRand <arand@soe.ucsc.edu>2018-02-08 14:24:46 -0800
commit67e3616ad598fc48c246821ae94623252b97e477 (patch)
treec0fc76af62d9b69b8c05f6d54129bfa8828ca84d
parent197885a402a95dc68dce04d490843021844ab359 (diff)
downloaddriver-core-67e3616ad598fc48c246821ae94623252b97e477.tar.gz
driver-core-67e3616ad598fc48c246821ae94623252b97e477.tar.bz2
driver-core-67e3616ad598fc48c246821ae94623252b97e477.zip
second attempt, don't touch dal, make a trait of converter helper methods
-rw-r--r--src/main/scala/xyz/driver/core/database/Converters.scala14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/database/Converters.scala b/src/main/scala/xyz/driver/core/database/Converters.scala
new file mode 100644
index 0000000..cfc5afd
--- /dev/null
+++ b/src/main/scala/xyz/driver/core/database/Converters.scala
@@ -0,0 +1,14 @@
+package xyz.driver.core.database
+
+import xyz.driver.core.rest.errors.DatabaseException
+
+import scala.reflect.ClassTag
+
+trait Converters {
+ def fromStringOrThrow[T](entityStr: String, mapper: (String => Option[T]), entityName: String): T =
+ mapper(entityStr).getOrElse(throw DatabaseException(s"Invalid $entityName in database: $entityStr"))
+
+ def expectValid[T](mapper: String => Option[T], query: String)(implicit ct: ClassTag[T]): T = {
+ fromStringOrThrow[T](query, mapper, ct.toString())
+ }
+}