blob: e0400fbf2b7c0794c04b63a798f22fcde41304ce (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package xyz.driver.core.rest.errors
import akka.http.scaladsl.model.{StatusCode, StatusCodes}
abstract class APIError extends Throwable {
def isPatientSensitive: Boolean = false
def statusCode: StatusCode
def message: String
}
final case class InvalidInputError(override val message: String = "Invalid input",
override val isPatientSensitive: Boolean = false)
extends APIError {
override def statusCode: StatusCode = StatusCodes.BadRequest
}
final case class InvalidActionError(override val message: String = "This action is not allowed",
override val isPatientSensitive: Boolean = false)
extends APIError {
override def statusCode: StatusCode = StatusCodes.Forbidden
}
final case class ResourceNotFoundError(override val message: String = "Resource not found",
override val isPatientSensitive: Boolean = false)
extends APIError {
override def statusCode: StatusCode = StatusCodes.NotFound
}
final case class ExternalServiceTimeoutError(override val message: String = "Another service took too long to respond",
override val isPatientSensitive: Boolean = false)
extends APIError {
override def statusCode: StatusCode = StatusCodes.GatewayTimeout
}
final case class DatabaseError(override val message: String = "Database access error",
override val isPatientSensitive: Boolean = false)
extends APIError {
override def statusCode: StatusCode = StatusCodes.InternalServerError
}
|