aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/database/Converters.scala
diff options
context:
space:
mode:
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())
+ }
+}