{-# LANGUAGE OverloadedStrings #-}
module Database.Persist.Postgresql.Common
    ( LSN(..)
    ) where

import Database.PostgreSQL.Types.LSN
import Database.Persist.Sql
import qualified Data.Text as T

instance PersistField LSN where
  toPersistValue = PersistDbSpecific . encodeLSN
  fromPersistValue (PersistDbSpecific t) = case decodeLSN t of
    Left err -> Left $ T.pack err
    Right ok -> Right ok
  fromPersistValue _ = Left "Could not decode LSN"

instance PersistFieldSql LSN where
  sqlType _ = SqlOther "pg_lsn"