24 lines
888 B
Haskell
24 lines
888 B
Haskell
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
|
module Net.IP.Instances
|
|
(
|
|
) where
|
|
|
|
import ClassyPrelude
|
|
|
|
import Net.IP (IP)
|
|
import qualified Net.IP as IP
|
|
|
|
import Database.Persist.Sql
|
|
|
|
import qualified Data.Text.Encoding as Text
|
|
|
|
|
|
instance PersistField IP where
|
|
toPersistValue = PersistDbSpecific . encodeUtf8 . IP.encode
|
|
fromPersistValue (PersistDbSpecific bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . IP.decode
|
|
fromPersistValue (PersistByteString bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . IP.decode
|
|
fromPersistValue (PersistText t) = maybe (Left "Could not parse IP-address") Right $ IP.decode t
|
|
fromPersistValue _ = Left "IP-address values must be converted from PersistDbSpecific, PersistText, or PersistByteString"
|
|
instance PersistFieldSql IP where
|
|
sqlType _ = SqlOther "inet"
|