Clean up column table code

This commit is contained in:
2023-09-16 18:39:45 +02:00
parent 390e60738f
commit 335b6188d1
4 changed files with 91 additions and 89 deletions
+11 -5
View File
@@ -1,15 +1,21 @@
module Database.PostgreSQL.Opium.Error (Error (..)) where
module Database.PostgreSQL.Opium.Error (Error (..), ErrorPosition (..)) where
import Control.Exception (Exception)
import Data.Text (Text)
import Database.PostgreSQL.LibPQ (ExecStatus, Oid, Row)
import Database.PostgreSQL.Opium.FromField (FieldError)
data ErrorPosition = ErrorPosition
{ errorPositionRow :: Row
, errorPositionColumn :: Text
} deriving (Eq, Show)
data Error
= ErrorDecode Row Text FieldError
| ErrorNoResult
= ErrorNoResult
| ErrorInvalidResult ExecStatus Text
| ErrorMissingColumn Text
| ErrorInvalidOid Text Oid
| ErrorUnexpectedNull Row Text
| ErrorUnexpectedNull ErrorPosition
| ErrorInvalidField ErrorPosition Oid Text String
deriving (Eq, Show)
instance Exception Error where
+5 -14
View File
@@ -3,8 +3,7 @@
{-# LANGUAGE TypeApplications #-}
module Database.PostgreSQL.Opium.FromField
( FieldError (..)
, FromField (..)
( FromField (..)
, fromField
) where
@@ -25,23 +24,15 @@ import Database.PostgreSQL.LibPQ (Oid)
import GHC.Float (double2Float)
import qualified Data.Text as Text
import qualified Database.PostgreSQL.Opium.Oid as Oid
(\/) :: (a -> Bool) -> (a -> Bool) -> a -> Bool
p \/ q = \x -> p x || q x
data FieldError
= FieldErrorUnexpectedNull
| FieldErrorInvalidField Oid Text String
deriving (Eq, Show)
mapLeft :: (b -> c) -> Either b a -> Either c a
mapLeft f (Left l) = Left $ f l
mapLeft _ (Right r) = Right r
fromField :: FromField a => Oid -> Text -> Either FieldError a
fromField oid field =
mapLeft (FieldErrorInvalidField oid field) $ parseOnly parseField field
fromField :: FromField a => Text -> Either String a
fromField =
parseOnly parseField
class FromField a where
validOid :: Proxy a -> Oid -> Bool