module Database.Persist.Net.Simple
() 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.Mac.Text as MacText
instance PersistField IPv4 where
toPersistValue = toPersistValueTextShow IPv4Text.encode
fromPersistValue = fromPersistValueTextRead IPv4Text.decode
instance PersistFieldSql IPv4 where
sqlType _ = SqlString
instance PersistField Mac where
toPersistValue = toPersistValueTextShow MacText.encode
fromPersistValue = fromPersistValueTextRead MacText.decode
instance PersistFieldSql Mac where
sqlType _ = SqlString
fromPersistValueTextRead :: (Text -> Maybe a) -> PersistValue -> Either Text a
fromPersistValueTextRead fromText z = do
t <- fromPersistValueText z
case fromText t of
Nothing -> Left $ "Could not parse the following text:" <> Text.pack (show t)
Just v -> Right v
toPersistValueTextShow :: (a -> Text) -> a -> PersistValue
toPersistValueTextShow f a = PersistText (f a)