{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE UndecidableInstances #-}

module Database.Persist.Relational.ToPersistEntity
       where

import Database.Record.FromSql (RecordFromSql, recordFromSql, (<&>))
import Database.Persist (PersistValue)

class ToPersistEntity a b | a -> b, b -> a where
    recordFromSql' :: RecordFromSql PersistValue b

instance ToPersistEntity () () where
    recordFromSql' = recordFromSql

instance (ToPersistEntity a c, ToPersistEntity b d) =>  ToPersistEntity (a, b) (c, d) where
    recordFromSql' = recordFromSql' <&> recordFromSql'