module Database.Persist.Sql.Types
( module Database.Persist.Sql.Types
, SqlBackend (..), SqlReadBackend (..), SqlWriteBackend (..)
, Statement (..), LogFunc, InsertSqlResult (..)
, readToUnknown, readToWrite, writeToUnknown
, SqlBackendCanRead, SqlBackendCanWrite, SqlReadT, SqlWriteT, IsSqlBackend
) where
import Control.Exception (Exception)
import Control.Monad.Logger (NoLoggingT)
import Control.Monad.Trans.Reader (ReaderT (..))
import Control.Monad.Trans.Resource (ResourceT)
import Control.Monad.Trans.Writer (WriterT)
import Data.Pool (Pool)
import Data.Text (Text)
import Data.Typeable (Typeable)
import Database.Persist.Types
import Database.Persist.Sql.Types.Internal
data Column = Column
{ Column -> DBName
cName :: !DBName
, Column -> Bool
cNull :: !Bool
, Column -> SqlType
cSqlType :: !SqlType
, Column -> Maybe Text
cDefault :: !(Maybe Text)
, Column -> Maybe DBName
cDefaultConstraintName :: !(Maybe DBName)
, Column -> Maybe Integer
cMaxLen :: !(Maybe Integer)
, Column -> Maybe (DBName, DBName)
cReference :: !(Maybe (DBName, DBName))
}
deriving (Column -> Column -> Bool
(Column -> Column -> Bool)
-> (Column -> Column -> Bool) -> Eq Column
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Column -> Column -> Bool
$c/= :: Column -> Column -> Bool
== :: Column -> Column -> Bool
$c== :: Column -> Column -> Bool
Eq, Eq Column
Eq Column
-> (Column -> Column -> Ordering)
-> (Column -> Column -> Bool)
-> (Column -> Column -> Bool)
-> (Column -> Column -> Bool)
-> (Column -> Column -> Bool)
-> (Column -> Column -> Column)
-> (Column -> Column -> Column)
-> Ord Column
Column -> Column -> Bool
Column -> Column -> Ordering
Column -> Column -> Column
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Column -> Column -> Column
$cmin :: Column -> Column -> Column
max :: Column -> Column -> Column
$cmax :: Column -> Column -> Column
>= :: Column -> Column -> Bool
$c>= :: Column -> Column -> Bool
> :: Column -> Column -> Bool
$c> :: Column -> Column -> Bool
<= :: Column -> Column -> Bool
$c<= :: Column -> Column -> Bool
< :: Column -> Column -> Bool
$c< :: Column -> Column -> Bool
compare :: Column -> Column -> Ordering
$ccompare :: Column -> Column -> Ordering
$cp1Ord :: Eq Column
Ord, Int -> Column -> ShowS
[Column] -> ShowS
Column -> String
(Int -> Column -> ShowS)
-> (Column -> String) -> ([Column] -> ShowS) -> Show Column
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Column] -> ShowS
$cshowList :: [Column] -> ShowS
show :: Column -> String
$cshow :: Column -> String
showsPrec :: Int -> Column -> ShowS
$cshowsPrec :: Int -> Column -> ShowS
Show)
data PersistentSqlException = StatementAlreadyFinalized Text
| Couldn'tGetSQLConnection
deriving (Typeable, Int -> PersistentSqlException -> ShowS
[PersistentSqlException] -> ShowS
PersistentSqlException -> String
(Int -> PersistentSqlException -> ShowS)
-> (PersistentSqlException -> String)
-> ([PersistentSqlException] -> ShowS)
-> Show PersistentSqlException
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PersistentSqlException] -> ShowS
$cshowList :: [PersistentSqlException] -> ShowS
show :: PersistentSqlException -> String
$cshow :: PersistentSqlException -> String
showsPrec :: Int -> PersistentSqlException -> ShowS
$cshowsPrec :: Int -> PersistentSqlException -> ShowS
Show)
instance Exception PersistentSqlException
type SqlPersistT = ReaderT SqlBackend
type SqlPersistM = SqlPersistT (NoLoggingT (ResourceT IO))
type Sql = Text
type CautiousMigration = [(Bool, Sql)]
type Migration = WriterT [Text] (WriterT CautiousMigration (ReaderT SqlBackend IO)) ()
type ConnectionPool = Pool SqlBackend
newtype Single a = Single {Single a -> a
unSingle :: a}
deriving (Single a -> Single a -> Bool
(Single a -> Single a -> Bool)
-> (Single a -> Single a -> Bool) -> Eq (Single a)
forall a. Eq a => Single a -> Single a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Single a -> Single a -> Bool
$c/= :: forall a. Eq a => Single a -> Single a -> Bool
== :: Single a -> Single a -> Bool
$c== :: forall a. Eq a => Single a -> Single a -> Bool
Eq, Eq (Single a)
Eq (Single a)
-> (Single a -> Single a -> Ordering)
-> (Single a -> Single a -> Bool)
-> (Single a -> Single a -> Bool)
-> (Single a -> Single a -> Bool)
-> (Single a -> Single a -> Bool)
-> (Single a -> Single a -> Single a)
-> (Single a -> Single a -> Single a)
-> Ord (Single a)
Single a -> Single a -> Bool
Single a -> Single a -> Ordering
Single a -> Single a -> Single a
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Single a)
forall a. Ord a => Single a -> Single a -> Bool
forall a. Ord a => Single a -> Single a -> Ordering
forall a. Ord a => Single a -> Single a -> Single a
min :: Single a -> Single a -> Single a
$cmin :: forall a. Ord a => Single a -> Single a -> Single a
max :: Single a -> Single a -> Single a
$cmax :: forall a. Ord a => Single a -> Single a -> Single a
>= :: Single a -> Single a -> Bool
$c>= :: forall a. Ord a => Single a -> Single a -> Bool
> :: Single a -> Single a -> Bool
$c> :: forall a. Ord a => Single a -> Single a -> Bool
<= :: Single a -> Single a -> Bool
$c<= :: forall a. Ord a => Single a -> Single a -> Bool
< :: Single a -> Single a -> Bool
$c< :: forall a. Ord a => Single a -> Single a -> Bool
compare :: Single a -> Single a -> Ordering
$ccompare :: forall a. Ord a => Single a -> Single a -> Ordering
$cp1Ord :: forall a. Ord a => Eq (Single a)
Ord, Int -> Single a -> ShowS
[Single a] -> ShowS
Single a -> String
(Int -> Single a -> ShowS)
-> (Single a -> String) -> ([Single a] -> ShowS) -> Show (Single a)
forall a. Show a => Int -> Single a -> ShowS
forall a. Show a => [Single a] -> ShowS
forall a. Show a => Single a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Single a] -> ShowS
$cshowList :: forall a. Show a => [Single a] -> ShowS
show :: Single a -> String
$cshow :: forall a. Show a => Single a -> String
showsPrec :: Int -> Single a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> Single a -> ShowS
Show, ReadPrec [Single a]
ReadPrec (Single a)
Int -> ReadS (Single a)
ReadS [Single a]
(Int -> ReadS (Single a))
-> ReadS [Single a]
-> ReadPrec (Single a)
-> ReadPrec [Single a]
-> Read (Single a)
forall a. Read a => ReadPrec [Single a]
forall a. Read a => ReadPrec (Single a)
forall a. Read a => Int -> ReadS (Single a)
forall a. Read a => ReadS [Single a]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Single a]
$creadListPrec :: forall a. Read a => ReadPrec [Single a]
readPrec :: ReadPrec (Single a)
$creadPrec :: forall a. Read a => ReadPrec (Single a)
readList :: ReadS [Single a]
$creadList :: forall a. Read a => ReadS [Single a]
readsPrec :: Int -> ReadS (Single a)
$creadsPrec :: forall a. Read a => Int -> ReadS (Single a)
Read)