{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleContexts #-}
{-# OPTIONS -fno-warn-orphans #-}
module Database.HDBC.SqlValueExtra () where
import Data.Convertible (Convertible(safeConvert), ConvertResult)
import Data.Int (Int8, Int16, Int32)
import Data.Word (Word8, Word16)
import Database.HDBC (SqlValue)
safeConvertFromIntegral32 :: Integral a => a -> ConvertResult SqlValue
safeConvertFromIntegral32 :: a -> ConvertResult SqlValue
safeConvertFromIntegral32 i :: a
i =
Int32 -> ConvertResult SqlValue
forall a b. Convertible a b => a -> ConvertResult b
safeConvert (a -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral a
i :: Int32)
safeConvertToIntegral32 :: Convertible Int32 a => SqlValue -> ConvertResult a
safeConvertToIntegral32 :: SqlValue -> ConvertResult a
safeConvertToIntegral32 v :: SqlValue
v =
Int32 -> ConvertResult a
forall a b. Convertible a b => a -> ConvertResult b
safeConvert (Int32 -> ConvertResult a)
-> Either ConvertError Int32 -> ConvertResult a
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (SqlValue -> Either ConvertError Int32
forall a b. Convertible a b => a -> ConvertResult b
safeConvert SqlValue
v :: ConvertResult Int32)
instance Convertible Int8 SqlValue where
safeConvert :: Int8 -> ConvertResult SqlValue
safeConvert = Int8 -> ConvertResult SqlValue
forall a. Integral a => a -> ConvertResult SqlValue
safeConvertFromIntegral32
instance Convertible SqlValue Int8 where
safeConvert :: SqlValue -> ConvertResult Int8
safeConvert = SqlValue -> ConvertResult Int8
forall a. Convertible Int32 a => SqlValue -> ConvertResult a
safeConvertToIntegral32
instance Convertible Int16 SqlValue where
safeConvert :: Int16 -> ConvertResult SqlValue
safeConvert = Int16 -> ConvertResult SqlValue
forall a. Integral a => a -> ConvertResult SqlValue
safeConvertFromIntegral32
instance Convertible SqlValue Int16 where
safeConvert :: SqlValue -> ConvertResult Int16
safeConvert = SqlValue -> ConvertResult Int16
forall a. Convertible Int32 a => SqlValue -> ConvertResult a
safeConvertToIntegral32
instance Convertible Word8 SqlValue where
safeConvert :: Word8 -> ConvertResult SqlValue
safeConvert = Word8 -> ConvertResult SqlValue
forall a. Integral a => a -> ConvertResult SqlValue
safeConvertFromIntegral32
instance Convertible SqlValue Word8 where
safeConvert :: SqlValue -> ConvertResult Word8
safeConvert = SqlValue -> ConvertResult Word8
forall a. Convertible Int32 a => SqlValue -> ConvertResult a
safeConvertToIntegral32
instance Convertible Word16 SqlValue where
safeConvert :: Word16 -> ConvertResult SqlValue
safeConvert = Word16 -> ConvertResult SqlValue
forall a. Integral a => a -> ConvertResult SqlValue
safeConvertFromIntegral32
instance Convertible SqlValue Word16 where
safeConvert :: SqlValue -> ConvertResult Word16
safeConvert = SqlValue -> ConvertResult Word16
forall a. Convertible Int32 a => SqlValue -> ConvertResult a
safeConvertToIntegral32