{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
module Database.HDBC.Record.TH (
derivePersistableInstanceFromConvertible,
) where
import Data.Convertible (convert)
import Language.Haskell.TH (Q, Dec, Type)
import Database.HDBC (SqlValue)
import Database.HDBC.SqlValueExtra ()
import Database.Record (FromSql (..), ToSql(..))
import Database.Record.FromSql (valueRecordFromSql)
import Database.Record.ToSql (valueRecordToSql)
derivePersistableInstanceFromConvertible :: Q Type
-> Q [Dec]
derivePersistableInstanceFromConvertible typ =
[d| instance FromSql SqlValue $(typ) where
recordFromSql = valueRecordFromSql convert
instance ToSql SqlValue $(typ) where
recordToSql = valueRecordToSql convert
|]