diff options
Diffstat (limited to 'src')
-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()) + } +} |