From edfadd543cfdc32177e8cc4392ea598afb12f7c0 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 20 Jan 2016 13:55:30 +0000 Subject: casting ids --- spec/src/Thermoprint/Identifiers.hs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/spec/src/Thermoprint/Identifiers.hs b/spec/src/Thermoprint/Identifiers.hs index 9608922..a2609a4 100644 --- a/spec/src/Thermoprint/Identifiers.hs +++ b/spec/src/Thermoprint/Identifiers.hs @@ -5,16 +5,20 @@ module Thermoprint.Identifiers ( PrinterId(..) , JobId(..) , DraftId(..) + , castId ) where import Servant.API (ToText, FromText) import Data.Aeson (FromJSON, ToJSON) newtype PrinterId = PrinterId Integer - deriving (Show, Eq, Ord, Enum, FromText, ToText, FromJSON, ToJSON) + deriving (Show, Eq, Ord, Num, Real, Integral, Enum, FromText, ToText, FromJSON, ToJSON) newtype JobId = JobId Integer - deriving (Show, Eq, Ord, Enum, FromText, ToText, FromJSON, ToJSON) + deriving (Show, Eq, Ord, Num, Real, Integral, Enum, FromText, ToText, FromJSON, ToJSON) newtype DraftId = DraftId Integer - deriving (Show, Eq, Ord, Enum, FromText, ToText, FromJSON, ToJSON) + deriving (Show, Eq, Ord, Num, Real, Integral, Enum, FromText, ToText, FromJSON, ToJSON) + +castId :: (Integral a, Enum b) => a -> b +castId = toEnum . fromInteger . toInteger -- cgit v1.2.3