From 197885a402a95dc68dce04d490843021844ab359 Mon Sep 17 00:00:00 2001 From: ArtRand Date: Wed, 7 Feb 2018 17:08:01 -0800 Subject: add fromStringOrThrow to Dal --- src/main/scala/xyz/driver/core/database/Dal.scala | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/main/scala/xyz/driver') diff --git a/src/main/scala/xyz/driver/core/database/Dal.scala b/src/main/scala/xyz/driver/core/database/Dal.scala index 581bd0f..f9af7fe 100644 --- a/src/main/scala/xyz/driver/core/database/Dal.scala +++ b/src/main/scala/xyz/driver/core/database/Dal.scala @@ -1,6 +1,7 @@ package xyz.driver.core.database import slick.lifted.AbstractTable +import xyz.driver.core.rest.errors.DatabaseException import scala.concurrent.{ExecutionContext, Future} import scalaz.{ListT, Monad, OptionT} @@ -16,6 +17,10 @@ trait Dal { def customAction[R](action: => OptionT[Future, R]): OptionT[T, R] = OptionT[T, R](customAction(action.run)) + + implicit def fromStringOrThrow[D](mapper: (String) => Option[D])(msg: String)(fs: String): D = { + mapper(fs).getOrElse(throw DatabaseException(msg)) + } } class FutureDal(executionContext: ExecutionContext) extends Dal { -- cgit v1.2.3 From 67e3616ad598fc48c246821ae94623252b97e477 Mon Sep 17 00:00:00 2001 From: ArtRand Date: Thu, 8 Feb 2018 14:24:46 -0800 Subject: second attempt, don't touch dal, make a trait of converter helper methods --- src/main/scala/xyz/driver/core/database/Converters.scala | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/scala/xyz/driver/core/database/Converters.scala (limited to 'src/main/scala/xyz/driver') 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()) + } +} -- cgit v1.2.3 From 0b1162825500c5e481a242ff7302cfd5123f368a Mon Sep 17 00:00:00 2001 From: ArtRand Date: Thu, 8 Feb 2018 15:13:54 -0800 Subject: remove dal method --- src/main/scala/xyz/driver/core/database/Dal.scala | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src/main/scala/xyz/driver') diff --git a/src/main/scala/xyz/driver/core/database/Dal.scala b/src/main/scala/xyz/driver/core/database/Dal.scala index f9af7fe..6157493 100644 --- a/src/main/scala/xyz/driver/core/database/Dal.scala +++ b/src/main/scala/xyz/driver/core/database/Dal.scala @@ -17,10 +17,6 @@ trait Dal { def customAction[R](action: => OptionT[Future, R]): OptionT[T, R] = OptionT[T, R](customAction(action.run)) - - implicit def fromStringOrThrow[D](mapper: (String) => Option[D])(msg: String)(fs: String): D = { - mapper(fs).getOrElse(throw DatabaseException(msg)) - } } class FutureDal(executionContext: ExecutionContext) extends Dal { -- cgit v1.2.3 From bcfed5f3817ae28053fe6479a106a48205eeffa2 Mon Sep 17 00:00:00 2001 From: ArtRand Date: Thu, 8 Feb 2018 15:16:49 -0800 Subject: remove old import --- src/main/scala/xyz/driver/core/database/Dal.scala | 1 - 1 file changed, 1 deletion(-) (limited to 'src/main/scala/xyz/driver') diff --git a/src/main/scala/xyz/driver/core/database/Dal.scala b/src/main/scala/xyz/driver/core/database/Dal.scala index 6157493..581bd0f 100644 --- a/src/main/scala/xyz/driver/core/database/Dal.scala +++ b/src/main/scala/xyz/driver/core/database/Dal.scala @@ -1,7 +1,6 @@ package xyz.driver.core.database import slick.lifted.AbstractTable -import xyz.driver.core.rest.errors.DatabaseException import scala.concurrent.{ExecutionContext, Future} import scalaz.{ListT, Monad, OptionT} -- cgit v1.2.3