aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/errors/serviceException.scala')
-rw-r--r--src/main/scala/xyz/driver/core/rest/errors/serviceException.scala41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala b/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala
new file mode 100644
index 0000000..94f9734
--- /dev/null
+++ b/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala
@@ -0,0 +1,41 @@
+package xyz.driver.core.rest.errors
+
+import akka.http.scaladsl.model.{StatusCode, StatusCodes}
+
+abstract class ServiceException extends Exception {
+ def isPatientSensitive: Boolean = false
+
+ def statusCode: StatusCode
+ def message: String
+}
+
+final case class InvalidInputException(override val message: String = "Invalid input",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.BadRequest
+}
+
+final case class InvalidActionException(override val message: String = "This action is not allowed",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.Forbidden
+}
+
+final case class ResourceNotFoundException(override val message: String = "Resource not found",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.NotFound
+}
+
+final case class ExternalServiceTimeoutException(override val message: String =
+ "Another service took too long to respond",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.GatewayTimeout
+}
+
+final case class DatabaseException(override val message: String = "Database access error",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.InternalServerError
+}