aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/database/Converters.scala
diff options
context:
space:
mode:
authorArthur Rand <arand@ucsc.edu>2018-02-08 18:14:23 -0800
committerGitHub <noreply@github.com>2018-02-08 18:14:23 -0800
commitdf887f74ff73e3ba5352391dce5843806eb300e6 (patch)
treef5d921e154f54ae8c1f28ea8b10db458951d5a88 /src/main/scala/xyz/driver/core/database/Converters.scala
parente848f3822e934e1656b2008dc956b50fa53cc20a (diff)
parentbcfed5f3817ae28053fe6479a106a48205eeffa2 (diff)
downloaddriver-core-df887f74ff73e3ba5352391dce5843806eb300e6.tar.gz
driver-core-df887f74ff73e3ba5352391dce5843806eb300e6.tar.bz2
driver-core-df887f74ff73e3ba5352391dce5843806eb300e6.zip
Merge pull request #109 from drivergroup/api-1252-generalize-db-errors
[API-1252] Add general method for checking for database errors
Diffstat (limited to 'src/main/scala/xyz/driver/core/database/Converters.scala')
-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())
+ }
+}