This repository has been archived on 2024-10-24. You can view files and clone it, but cannot push or open issues or pull requests.
fradrive-old/src/Network/IP/Addr/Instances.hs
2021-01-11 14:16:39 +01:00

40 lines
1.1 KiB
Haskell

{-# OPTIONS_GHC -fno-warn-orphans #-}
module Network.IP.Addr.Instances
(
) where
import ClassyPrelude
import Network.IP.Addr
import qualified Data.Textual as Textual
import Database.Persist.Sql
import qualified Data.Text.Encoding as Text
import Utils.Persist
import Data.Proxy
instance PersistField IP where
toPersistValue = PersistLiteralEscaped . Textual.toUtf8
fromPersistValue (PersistLiteralEscaped bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . Textual.fromText
fromPersistValue (PersistByteString bs) = first tshow (Text.decodeUtf8' bs) >>= maybe (Left "Could not parse IP-address") Right . Textual.fromText
fromPersistValue (PersistText t) = maybe (Left "Could not parse IP-address") Right $ Textual.fromText t
fromPersistValue x = Left $ fromPersistValueErrorSql (Proxy @IP) x
instance PersistFieldSql IP where
sqlType _ = SqlOther "inet"
instance (NFData v4, NFData v6) => NFData (IP46 v4 v6) where
rnf (IPv4 v4) = rnf v4
rnf (IPv6 v6) = rnf v6
instance NFData IP4 where
rnf = rnf . ip4ToOctets
instance NFData IP6 where
rnf = rnf . ip6ToWords