module Database.PostgreSQL.PQTypes.ExtrasOptions
  ( ExtrasOptions(..)
  , defaultExtrasOptions
  , ObjectsValidationMode(..)
  ) where

data ExtrasOptions =
    ExtrasOptions
    { ExtrasOptions -> Maybe Int
eoLockTimeoutMs            :: !(Maybe Int)
    , ExtrasOptions -> Bool
eoEnforcePKs               :: !Bool
      -- ^ Validate that every handled table has a primary key
    , ExtrasOptions -> ObjectsValidationMode
eoObjectsValidationMode    :: !ObjectsValidationMode
      -- ^ Validation mode for unknown tables and composite types.
    , ExtrasOptions -> Bool
eoAllowHigherTableVersions :: !Bool
      -- ^ Whether to allow tables in the database to have higher versions than
      -- the one in the code definition.
    } deriving ExtrasOptions -> ExtrasOptions -> Bool
(ExtrasOptions -> ExtrasOptions -> Bool)
-> (ExtrasOptions -> ExtrasOptions -> Bool) -> Eq ExtrasOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExtrasOptions -> ExtrasOptions -> Bool
$c/= :: ExtrasOptions -> ExtrasOptions -> Bool
== :: ExtrasOptions -> ExtrasOptions -> Bool
$c== :: ExtrasOptions -> ExtrasOptions -> Bool
Eq

defaultExtrasOptions :: ExtrasOptions
defaultExtrasOptions :: ExtrasOptions
defaultExtrasOptions = ExtrasOptions :: Maybe Int -> Bool -> ObjectsValidationMode -> Bool -> ExtrasOptions
ExtrasOptions
  { eoLockTimeoutMs :: Maybe Int
eoLockTimeoutMs            = Maybe Int
forall a. Maybe a
Nothing
  , eoEnforcePKs :: Bool
eoEnforcePKs               = Bool
False
  , eoObjectsValidationMode :: ObjectsValidationMode
eoObjectsValidationMode    = ObjectsValidationMode
DontAllowUnknownObjects
  , eoAllowHigherTableVersions :: Bool
eoAllowHigherTableVersions = Bool
False
  }

data ObjectsValidationMode = AllowUnknownObjects | DontAllowUnknownObjects
  deriving ObjectsValidationMode -> ObjectsValidationMode -> Bool
(ObjectsValidationMode -> ObjectsValidationMode -> Bool)
-> (ObjectsValidationMode -> ObjectsValidationMode -> Bool)
-> Eq ObjectsValidationMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ObjectsValidationMode -> ObjectsValidationMode -> Bool
$c/= :: ObjectsValidationMode -> ObjectsValidationMode -> Bool
== :: ObjectsValidationMode -> ObjectsValidationMode -> Bool
$c== :: ObjectsValidationMode -> ObjectsValidationMode -> Bool
Eq