module Database.Persist.Net.PostgreSQL
() where
import Database.Persist
import Database.Persist.Class
import Database.Persist.Sql
import Data.Text (Text)
import Data.Monoid
import Net.IPv4 (IPv4)
import Net.Mac (Mac)
import qualified Data.Text as Text
import qualified Net.IPv4.Text as IPv4Text
import qualified Net.IPv4.ByteString.Char8 as IPv4ByteString
import qualified Net.Mac.Text as MacText
import qualified Net.Mac.ByteString.Char8 as MacByteString
instance PersistField IPv4 where
toPersistValue = toPersistValue . IPv4Text.encode
fromPersistValue v = case v of
PersistDbSpecific s -> case IPv4ByteString.decode s of
Just x -> Right x
Nothing -> Left (Text.pack "PersistValue IPv4: Invalid format")
_ -> Left (Text.pack "PersistValue IPv4: Not a PersistDbSpecific")
instance PersistFieldSql IPv4 where
sqlType _ = SqlOther (Text.pack "inet")
instance PersistField Mac where
toPersistValue = toPersistValue . MacText.encode
fromPersistValue v = case v of
PersistDbSpecific s -> case MacByteString.decode s of
Just x -> Right x
Nothing -> Left (Text.pack "PersistValue MAC: Invalid format")
_ -> Left (Text.pack "PersistValue MAC: Not a PersistDbSpecific")
instance PersistFieldSql Mac where
sqlType _ = SqlOther (Text.pack "macaddr")