relational-query-HDBC-0.0.1.0: src/Database/HDBC/Record/Persistable.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE TemplateHaskell #-}
-- |
-- Module : Database.HDBC.Record.Persistable
-- Copyright : 2013 Kei Hibino
-- License : BSD3
--
-- Maintainer : ex8k.hibino@gmail.com
-- Stability : experimental
-- Portability : unknown
--
-- This module provides HDBC instance definitions of DB-record.
module Database.HDBC.Record.Persistable (
persistableSqlValue
) where
import Database.Record (PersistableSqlValue, PersistableType (..), PersistableValue (..))
import Database.Record.Persistable (unsafePersistableSqlTypeFromNull)
import qualified Database.Record.Persistable as Record
import Database.HDBC.Record.InternalTH (derivePersistableInstancesFromConvertibleSqlValues)
import Data.Convertible (Convertible)
import Database.HDBC (SqlValue(SqlNull), fromSql, toSql)
instance PersistableType SqlValue where
persistableType = unsafePersistableSqlTypeFromNull SqlNull
-- | Derived 'PersistableSqlValue' from 'Convertible'.
persistableSqlValue :: (Convertible SqlValue a, Convertible a SqlValue)
=> PersistableSqlValue SqlValue a
persistableSqlValue = Record.persistableSqlValue persistableType fromSql toSql
-- | Infered 'PersistableSqlValue' from 'Convertible'.
instance (Convertible SqlValue a, Convertible a SqlValue)
=> PersistableValue SqlValue a where
persistableValue = persistableSqlValue
$(derivePersistableInstancesFromConvertibleSqlValues)