{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-} -- | -- Module : Database.HDBC.Record.TH -- Copyright : 2013 Kei Hibino -- License : BSD3 -- -- Maintainer : ex8k.hibino@gmail.com -- Stability : experimental -- Portability : unknown -- -- This module provides DB-record templates depends on HDBC. 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) -- | Template to declare HDBC instances of DB-record against single value type. derivePersistableInstanceFromConvertible :: Q Type -- ^ Type to implement instances -> Q [Dec] -- ^ Result declarations derivePersistableInstanceFromConvertible typ = [d| instance FromSql SqlValue $(typ) where recordFromSql = valueRecordFromSql convert instance ToSql SqlValue $(typ) where recordToSql = valueRecordToSql convert |]