diff options
author | Arthur Rand <arand@ucsc.edu> | 2018-02-08 18:14:23 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-08 18:14:23 -0800 |
commit | df887f74ff73e3ba5352391dce5843806eb300e6 (patch) | |
tree | f5d921e154f54ae8c1f28ea8b10db458951d5a88 /src/main/scala/xyz/driver/core/database | |
parent | e848f3822e934e1656b2008dc956b50fa53cc20a (diff) | |
parent | bcfed5f3817ae28053fe6479a106a48205eeffa2 (diff) | |
download | driver-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')
-rw-r--r-- | src/main/scala/xyz/driver/core/database/Converters.scala | 14 |
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()) + } +} |