{-|
Module: Database.Persist.Monad.Shim

Defines all the @persistent@ functions lifted into 'MonadSqlQuery'.

This file is autogenerated, to keep it in sync with
@Database.Persist.Monad.SqlQueryRep@.
-}

{- THIS FILE IS AUTOGENERATED AND SHOULD NOT BE EDITED MANUALLY -}

{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RankNTypes #-}

module Database.Persist.Monad.Shim where

import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Resource (MonadResource)
import Data.Acquire (Acquire, allocateAcquire)
import Data.Conduit (ConduitM)
import Data.Int (Int64)
import Data.Map (Map)
import Data.Text (Text)
import Data.Typeable (Typeable)
import Data.Void (Void)
import Database.Persist.Sql hiding (pattern Update)
import GHC.Stack (HasCallStack)

import Database.Persist.Monad.Class (MonadSqlQuery(..))
import Database.Persist.Monad.SqlQueryRep (SqlQueryRep(..))

{-# ANN module "HLint: ignore" #-}

-- | The lifted version of 'Database.Persist.Sql.get'
get
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> m (Maybe record)
get :: Key record -> m (Maybe record)
get Key record
a1 = SqlQueryRep record (Maybe record) -> m (Maybe record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe record) -> m (Maybe record))
-> SqlQueryRep record (Maybe record) -> m (Maybe record)
forall a b. (a -> b) -> a -> b
$ Key record -> SqlQueryRep record (Maybe record)
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> SqlQueryRep record (Maybe record)
Get Key record
a1

-- | The lifted version of 'Database.Persist.Sql.getMany'
getMany
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Key record] -> m (Map (Key record) record)
getMany :: [Key record] -> m (Map (Key record) record)
getMany [Key record]
a1 = SqlQueryRep record (Map (Key record) record)
-> m (Map (Key record) record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Map (Key record) record)
 -> m (Map (Key record) record))
-> SqlQueryRep record (Map (Key record) record)
-> m (Map (Key record) record)
forall a b. (a -> b) -> a -> b
$ [Key record] -> SqlQueryRep record (Map (Key record) record)
forall record.
PersistRecordBackend record SqlBackend =>
[Key record] -> SqlQueryRep record (Map (Key record) record)
GetMany [Key record]
a1

-- | The lifted version of 'Database.Persist.Sql.getJust'
getJust
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> m record
getJust :: Key record -> m record
getJust Key record
a1 = SqlQueryRep record record -> m record
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record record -> m record)
-> SqlQueryRep record record -> m record
forall a b. (a -> b) -> a -> b
$ Key record -> SqlQueryRep record record
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> SqlQueryRep record record
GetJust Key record
a1

-- | The lifted version of 'Database.Persist.Sql.getJustEntity'
getJustEntity
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> m (Entity record)
getJustEntity :: Key record -> m (Entity record)
getJustEntity Key record
a1 = SqlQueryRep record (Entity record) -> m (Entity record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Entity record) -> m (Entity record))
-> SqlQueryRep record (Entity record) -> m (Entity record)
forall a b. (a -> b) -> a -> b
$ Key record -> SqlQueryRep record (Entity record)
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> SqlQueryRep record (Entity record)
GetJustEntity Key record
a1

-- | The lifted version of 'Database.Persist.Sql.getEntity'
getEntity
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> m (Maybe (Entity record))
getEntity :: Key record -> m (Maybe (Entity record))
getEntity Key record
a1 = SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Entity record))
 -> m (Maybe (Entity record)))
-> SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall a b. (a -> b) -> a -> b
$ Key record -> SqlQueryRep record (Maybe (Entity record))
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> SqlQueryRep record (Maybe (Entity record))
GetEntity Key record
a1

-- | The lifted version of 'Database.Persist.Sql.belongsTo'
belongsTo
  :: (PersistEntity record1, PersistRecordBackend record2 SqlBackend, Typeable record1, Typeable record2, MonadSqlQuery m)
  => (record1 -> Maybe (Key record2)) -> record1 -> m (Maybe record2)
belongsTo :: (record1 -> Maybe (Key record2)) -> record1 -> m (Maybe record2)
belongsTo record1 -> Maybe (Key record2)
a1 record1
a2 = SqlQueryRep (record1, record2) (Maybe record2) -> m (Maybe record2)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep (record1, record2) (Maybe record2)
 -> m (Maybe record2))
-> SqlQueryRep (record1, record2) (Maybe record2)
-> m (Maybe record2)
forall a b. (a -> b) -> a -> b
$ (record1 -> Maybe (Key record2))
-> record1 -> SqlQueryRep (record1, record2) (Maybe record2)
forall record1 record1.
(PersistEntity record1, PersistRecordBackend record1 SqlBackend) =>
(record1 -> Maybe (Key record1))
-> record1 -> SqlQueryRep (record1, record1) (Maybe record1)
BelongsTo record1 -> Maybe (Key record2)
a1 record1
a2

-- | The lifted version of 'Database.Persist.Sql.belongsToJust'
belongsToJust
  :: (PersistEntity record1, PersistRecordBackend record2 SqlBackend, Typeable record1, Typeable record2, MonadSqlQuery m)
  => (record1 -> Key record2) -> record1 -> m record2
belongsToJust :: (record1 -> Key record2) -> record1 -> m record2
belongsToJust record1 -> Key record2
a1 record1
a2 = SqlQueryRep (record1, record2) record2 -> m record2
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep (record1, record2) record2 -> m record2)
-> SqlQueryRep (record1, record2) record2 -> m record2
forall a b. (a -> b) -> a -> b
$ (record1 -> Key record2)
-> record1 -> SqlQueryRep (record1, record2) record2
forall record1 record2.
(PersistEntity record1, PersistRecordBackend record2 SqlBackend) =>
(record1 -> Key record2)
-> record1 -> SqlQueryRep (record1, record2) record2
BelongsToJust record1 -> Key record2
a1 record1
a2

-- | The lifted version of 'Database.Persist.Sql.insert'
insert
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Key record)
insert :: record -> m (Key record)
insert record
a1 = SqlQueryRep record (Key record) -> m (Key record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Key record) -> m (Key record))
-> SqlQueryRep record (Key record) -> m (Key record)
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Key record)
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record (Key record)
Insert record
a1

-- | The lifted version of 'Database.Persist.Sql.insert_'
insert_
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m ()
insert_ :: record -> m ()
insert_ record
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record ()
Insert_ record
a1

-- | The lifted version of 'Database.Persist.Sql.insertMany'
insertMany
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [record] -> m [Key record]
insertMany :: [record] -> m [Key record]
insertMany [record]
a1 = SqlQueryRep record [Key record] -> m [Key record]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record [Key record] -> m [Key record])
-> SqlQueryRep record [Key record] -> m [Key record]
forall a b. (a -> b) -> a -> b
$ [record] -> SqlQueryRep record [Key record]
forall record.
PersistRecordBackend record SqlBackend =>
[record] -> SqlQueryRep record [Key record]
InsertMany [record]
a1

-- | The lifted version of 'Database.Persist.Sql.insertMany_'
insertMany_
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [record] -> m ()
insertMany_ :: [record] -> m ()
insertMany_ [record]
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ [record] -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
[record] -> SqlQueryRep record ()
InsertMany_ [record]
a1

-- | The lifted version of 'Database.Persist.Sql.insertEntityMany'
insertEntityMany
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Entity record] -> m ()
insertEntityMany :: [Entity record] -> m ()
insertEntityMany [Entity record]
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ [Entity record] -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
[Entity record] -> SqlQueryRep record ()
InsertEntityMany [Entity record]
a1

-- | The lifted version of 'Database.Persist.Sql.insertKey'
insertKey
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> record -> m ()
insertKey :: Key record -> record -> m ()
insertKey Key record
a1 record
a2 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ Key record -> record -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> record -> SqlQueryRep record ()
InsertKey Key record
a1 record
a2

-- | The lifted version of 'Database.Persist.Sql.repsert'
repsert
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> record -> m ()
repsert :: Key record -> record -> m ()
repsert Key record
a1 record
a2 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ Key record -> record -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> record -> SqlQueryRep record ()
Repsert Key record
a1 record
a2

-- | The lifted version of 'Database.Persist.Sql.repsertMany'
repsertMany
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [(Key record, record)] -> m ()
repsertMany :: [(Key record, record)] -> m ()
repsertMany [(Key record, record)]
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ [(Key record, record)] -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
[(Key record, record)] -> SqlQueryRep record ()
RepsertMany [(Key record, record)]
a1

-- | The lifted version of 'Database.Persist.Sql.replace'
replace
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> record -> m ()
replace :: Key record -> record -> m ()
replace Key record
a1 record
a2 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ Key record -> record -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> record -> SqlQueryRep record ()
Replace Key record
a1 record
a2

-- | The lifted version of 'Database.Persist.Sql.delete'
delete
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> m ()
delete :: Key record -> m ()
delete Key record
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ Key record -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> SqlQueryRep record ()
Delete Key record
a1

-- | The lifted version of 'Database.Persist.Sql.update'
update
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> [Update record] -> m ()
update :: Key record -> [Update record] -> m ()
update Key record
a1 [Update record]
a2 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ Key record -> [Update record] -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> [Update record] -> SqlQueryRep record ()
Update Key record
a1 [Update record]
a2

-- | The lifted version of 'Database.Persist.Sql.updateGet'
updateGet
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> [Update record] -> m record
updateGet :: Key record -> [Update record] -> m record
updateGet Key record
a1 [Update record]
a2 = SqlQueryRep record record -> m record
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record record -> m record)
-> SqlQueryRep record record -> m record
forall a b. (a -> b) -> a -> b
$ Key record -> [Update record] -> SqlQueryRep record record
forall record.
PersistRecordBackend record SqlBackend =>
Key record -> [Update record] -> SqlQueryRep record record
UpdateGet Key record
a1 [Update record]
a2

-- | The lifted version of 'Database.Persist.Sql.insertEntity'
insertEntity
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Entity record)
insertEntity :: record -> m (Entity record)
insertEntity record
a1 = SqlQueryRep record (Entity record) -> m (Entity record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Entity record) -> m (Entity record))
-> SqlQueryRep record (Entity record) -> m (Entity record)
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Entity record)
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record (Entity record)
InsertEntity record
a1

-- | The lifted version of 'Database.Persist.Sql.insertRecord'
insertRecord
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m record
insertRecord :: record -> m record
insertRecord record
a1 = SqlQueryRep record record -> m record
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record record -> m record)
-> SqlQueryRep record record -> m record
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record record
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record record
InsertRecord record
a1

-- | The lifted version of 'Database.Persist.Sql.getBy'
getBy
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Unique record -> m (Maybe (Entity record))
getBy :: Unique record -> m (Maybe (Entity record))
getBy Unique record
a1 = SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Entity record))
 -> m (Maybe (Entity record)))
-> SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall a b. (a -> b) -> a -> b
$ Unique record -> SqlQueryRep record (Maybe (Entity record))
forall record.
PersistRecordBackend record SqlBackend =>
Unique record -> SqlQueryRep record (Maybe (Entity record))
GetBy Unique record
a1

#if MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.getByValue'
getByValue
  :: (PersistRecordBackend record SqlBackend, AtLeastOneUniqueKey record, Typeable record, MonadSqlQuery m)
  => record -> m (Maybe (Entity record))
getByValue :: record -> m (Maybe (Entity record))
getByValue record
a1 = SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Entity record))
 -> m (Maybe (Entity record)))
-> SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Maybe (Entity record))
forall record.
(PersistRecordBackend record SqlBackend,
 AtLeastOneUniqueKey record) =>
record -> SqlQueryRep record (Maybe (Entity record))
GetByValue record
a1
#endif

#if !MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.getByValue'
getByValue
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Maybe (Entity record))
getByValue a1 = runQueryRep $ GetByValue a1
#endif

-- | The lifted version of 'Database.Persist.Sql.checkUnique'
checkUnique
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Maybe (Unique record))
checkUnique :: record -> m (Maybe (Unique record))
checkUnique record
a1 = SqlQueryRep record (Maybe (Unique record))
-> m (Maybe (Unique record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Unique record))
 -> m (Maybe (Unique record)))
-> SqlQueryRep record (Maybe (Unique record))
-> m (Maybe (Unique record))
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Maybe (Unique record))
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record (Maybe (Unique record))
CheckUnique record
a1

#if MIN_VERSION_persistent(2,11,0)
-- | The lifted version of 'Database.Persist.Sql.checkUniqueUpdateable'
checkUniqueUpdateable
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Entity record -> m (Maybe (Unique record))
checkUniqueUpdateable :: Entity record -> m (Maybe (Unique record))
checkUniqueUpdateable Entity record
a1 = SqlQueryRep record (Maybe (Unique record))
-> m (Maybe (Unique record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Unique record))
 -> m (Maybe (Unique record)))
-> SqlQueryRep record (Maybe (Unique record))
-> m (Maybe (Unique record))
forall a b. (a -> b) -> a -> b
$ Entity record -> SqlQueryRep record (Maybe (Unique record))
forall record.
PersistRecordBackend record SqlBackend =>
Entity record -> SqlQueryRep record (Maybe (Unique record))
CheckUniqueUpdateable Entity record
a1
#endif

-- | The lifted version of 'Database.Persist.Sql.deleteBy'
deleteBy
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Unique record -> m ()
deleteBy :: Unique record -> m ()
deleteBy Unique record
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ Unique record -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
Unique record -> SqlQueryRep record ()
DeleteBy Unique record
a1

-- | The lifted version of 'Database.Persist.Sql.insertUnique'
insertUnique
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Maybe (Key record))
insertUnique :: record -> m (Maybe (Key record))
insertUnique record
a1 = SqlQueryRep record (Maybe (Key record)) -> m (Maybe (Key record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Key record)) -> m (Maybe (Key record)))
-> SqlQueryRep record (Maybe (Key record))
-> m (Maybe (Key record))
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Maybe (Key record))
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record (Maybe (Key record))
InsertUnique record
a1

#if MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.upsert'
upsert
  :: (PersistRecordBackend record SqlBackend, OnlyOneUniqueKey record, Typeable record, MonadSqlQuery m)
  => record -> [Update record] -> m (Entity record)
upsert :: record -> [Update record] -> m (Entity record)
upsert record
a1 [Update record]
a2 = SqlQueryRep record (Entity record) -> m (Entity record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Entity record) -> m (Entity record))
-> SqlQueryRep record (Entity record) -> m (Entity record)
forall a b. (a -> b) -> a -> b
$ record -> [Update record] -> SqlQueryRep record (Entity record)
forall record.
(PersistRecordBackend record SqlBackend,
 OnlyOneUniqueKey record) =>
record -> [Update record] -> SqlQueryRep record (Entity record)
Upsert record
a1 [Update record]
a2
#endif

#if !MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.upsert'
upsert
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> [Update record] -> m (Entity record)
upsert a1 a2 = runQueryRep $ Upsert a1 a2
#endif

-- | The lifted version of 'Database.Persist.Sql.upsertBy'
upsertBy
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => Unique record -> record -> [Update record] -> m (Entity record)
upsertBy :: Unique record -> record -> [Update record] -> m (Entity record)
upsertBy Unique record
a1 record
a2 [Update record]
a3 = SqlQueryRep record (Entity record) -> m (Entity record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Entity record) -> m (Entity record))
-> SqlQueryRep record (Entity record) -> m (Entity record)
forall a b. (a -> b) -> a -> b
$ Unique record
-> record -> [Update record] -> SqlQueryRep record (Entity record)
forall record.
PersistRecordBackend record SqlBackend =>
Unique record
-> record -> [Update record] -> SqlQueryRep record (Entity record)
UpsertBy Unique record
a1 record
a2 [Update record]
a3

-- | The lifted version of 'Database.Persist.Sql.putMany'
putMany
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [record] -> m ()
putMany :: [record] -> m ()
putMany [record]
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ [record] -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
[record] -> SqlQueryRep record ()
PutMany [record]
a1

#if MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.insertBy'
insertBy
  :: (PersistRecordBackend record SqlBackend, AtLeastOneUniqueKey record, Typeable record, MonadSqlQuery m)
  => record -> m (Either (Entity record) (Key record))
insertBy :: record -> m (Either (Entity record) (Key record))
insertBy record
a1 = SqlQueryRep record (Either (Entity record) (Key record))
-> m (Either (Entity record) (Key record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Either (Entity record) (Key record))
 -> m (Either (Entity record) (Key record)))
-> SqlQueryRep record (Either (Entity record) (Key record))
-> m (Either (Entity record) (Key record))
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Either (Entity record) (Key record))
forall record.
(PersistRecordBackend record SqlBackend,
 AtLeastOneUniqueKey record) =>
record -> SqlQueryRep record (Either (Entity record) (Key record))
InsertBy record
a1
#endif

#if !MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.insertBy'
insertBy
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Either (Entity record) (Key record))
insertBy a1 = runQueryRep $ InsertBy a1
#endif

-- | The lifted version of 'Database.Persist.Sql.insertUniqueEntity'
insertUniqueEntity
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Maybe (Entity record))
insertUniqueEntity :: record -> m (Maybe (Entity record))
insertUniqueEntity record
a1 = SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Entity record))
 -> m (Maybe (Entity record)))
-> SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Maybe (Entity record))
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record (Maybe (Entity record))
InsertUniqueEntity record
a1

-- | The lifted version of 'Database.Persist.Sql.replaceUnique'
replaceUnique
  :: (PersistRecordBackend record SqlBackend, Eq (Unique record), Eq record, Typeable record, MonadSqlQuery m)
  => Key record -> record -> m (Maybe (Unique record))
replaceUnique :: Key record -> record -> m (Maybe (Unique record))
replaceUnique Key record
a1 record
a2 = SqlQueryRep record (Maybe (Unique record))
-> m (Maybe (Unique record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Unique record))
 -> m (Maybe (Unique record)))
-> SqlQueryRep record (Maybe (Unique record))
-> m (Maybe (Unique record))
forall a b. (a -> b) -> a -> b
$ Key record -> record -> SqlQueryRep record (Maybe (Unique record))
forall record.
(PersistRecordBackend record SqlBackend, Eq (Unique record),
 Eq record) =>
Key record -> record -> SqlQueryRep record (Maybe (Unique record))
ReplaceUnique Key record
a1 record
a2

#if MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.onlyUnique'
onlyUnique
  :: (PersistRecordBackend record SqlBackend, OnlyOneUniqueKey record, Typeable record, MonadSqlQuery m)
  => record -> m (Unique record)
onlyUnique :: record -> m (Unique record)
onlyUnique record
a1 = SqlQueryRep record (Unique record) -> m (Unique record)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Unique record) -> m (Unique record))
-> SqlQueryRep record (Unique record) -> m (Unique record)
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record (Unique record)
forall record.
(PersistRecordBackend record SqlBackend,
 OnlyOneUniqueKey record) =>
record -> SqlQueryRep record (Unique record)
OnlyUnique record
a1
#endif

#if !MIN_VERSION_persistent(2,10,0)
-- | The lifted version of 'Database.Persist.Sql.onlyUnique'
onlyUnique
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m (Unique record)
onlyUnique a1 = runQueryRep $ OnlyUnique a1
#endif

-- | The lifted version of 'Database.Persist.Sql.selectSourceRes'
selectSourceRes
  :: (MonadIO m2, PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [SelectOpt record] -> m (Acquire (ConduitM () (Entity record) m2 ()))
selectSourceRes :: [Filter record]
-> [SelectOpt record]
-> m (Acquire (ConduitM () (Entity record) m2 ()))
selectSourceRes [Filter record]
a1 [SelectOpt record]
a2 = SqlQueryRep record (Acquire (ConduitM () (Entity record) m2 ()))
-> m (Acquire (ConduitM () (Entity record) m2 ()))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Acquire (ConduitM () (Entity record) m2 ()))
 -> m (Acquire (ConduitM () (Entity record) m2 ())))
-> SqlQueryRep record (Acquire (ConduitM () (Entity record) m2 ()))
-> m (Acquire (ConduitM () (Entity record) m2 ()))
forall a b. (a -> b) -> a -> b
$ [Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Entity record) m2 ()))
forall (m2 :: * -> *) record.
(MonadIO m2, PersistRecordBackend record SqlBackend) =>
[Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Entity record) m2 ()))
SelectSourceRes [Filter record]
a1 [SelectOpt record]
a2

-- | The lifted version of 'Database.Persist.Sql.selectFirst'
selectFirst
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [SelectOpt record] -> m (Maybe (Entity record))
selectFirst :: [Filter record] -> [SelectOpt record] -> m (Maybe (Entity record))
selectFirst [Filter record]
a1 [SelectOpt record]
a2 = SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Maybe (Entity record))
 -> m (Maybe (Entity record)))
-> SqlQueryRep record (Maybe (Entity record))
-> m (Maybe (Entity record))
forall a b. (a -> b) -> a -> b
$ [Filter record]
-> [SelectOpt record] -> SqlQueryRep record (Maybe (Entity record))
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record]
-> [SelectOpt record] -> SqlQueryRep record (Maybe (Entity record))
SelectFirst [Filter record]
a1 [SelectOpt record]
a2

-- | The lifted version of 'Database.Persist.Sql.selectKeysRes'
selectKeysRes
  :: (MonadIO m2, PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [SelectOpt record] -> m (Acquire (ConduitM () (Key record) m2 ()))
selectKeysRes :: [Filter record]
-> [SelectOpt record]
-> m (Acquire (ConduitM () (Key record) m2 ()))
selectKeysRes [Filter record]
a1 [SelectOpt record]
a2 = SqlQueryRep record (Acquire (ConduitM () (Key record) m2 ()))
-> m (Acquire (ConduitM () (Key record) m2 ()))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Acquire (ConduitM () (Key record) m2 ()))
 -> m (Acquire (ConduitM () (Key record) m2 ())))
-> SqlQueryRep record (Acquire (ConduitM () (Key record) m2 ()))
-> m (Acquire (ConduitM () (Key record) m2 ()))
forall a b. (a -> b) -> a -> b
$ [Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Key record) m2 ()))
forall (m2 :: * -> *) record.
(MonadIO m2, PersistRecordBackend record SqlBackend) =>
[Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Key record) m2 ()))
SelectKeysRes [Filter record]
a1 [SelectOpt record]
a2

-- | The lifted version of 'Database.Persist.Sql.count'
count
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> m Int
count :: [Filter record] -> m Int
count [Filter record]
a1 = SqlQueryRep record Int -> m Int
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record Int -> m Int)
-> SqlQueryRep record Int -> m Int
forall a b. (a -> b) -> a -> b
$ [Filter record] -> SqlQueryRep record Int
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record] -> SqlQueryRep record Int
Count [Filter record]
a1

#if MIN_VERSION_persistent(2,11,0)
-- | The lifted version of 'Database.Persist.Sql.exists'
exists
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> m Bool
exists :: [Filter record] -> m Bool
exists [Filter record]
a1 = SqlQueryRep record Bool -> m Bool
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record Bool -> m Bool)
-> SqlQueryRep record Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ [Filter record] -> SqlQueryRep record Bool
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record] -> SqlQueryRep record Bool
Exists [Filter record]
a1
#endif

-- | The lifted version of 'Database.Persist.Sql.selectSource'
selectSource
  :: (PersistRecordBackend record SqlBackend, MonadResource m, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [SelectOpt record] -> ConduitM () (Entity record) m ()
selectSource :: [Filter record]
-> [SelectOpt record] -> ConduitM () (Entity record) m ()
selectSource [Filter record]
a1 [SelectOpt record]
a2 = m (Acquire (ConduitM () (Entity record) m ()))
-> ConduitM () (Entity record) m ()
forall (m :: * -> *) i o a.
MonadResource m =>
m (Acquire (ConduitM i o m a)) -> ConduitM i o m a
fromAcquire (m (Acquire (ConduitM () (Entity record) m ()))
 -> ConduitM () (Entity record) m ())
-> m (Acquire (ConduitM () (Entity record) m ()))
-> ConduitM () (Entity record) m ()
forall a b. (a -> b) -> a -> b
$ SqlQueryRep record (Acquire (ConduitM () (Entity record) m ()))
-> m (Acquire (ConduitM () (Entity record) m ()))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Acquire (ConduitM () (Entity record) m ()))
 -> m (Acquire (ConduitM () (Entity record) m ())))
-> SqlQueryRep record (Acquire (ConduitM () (Entity record) m ()))
-> m (Acquire (ConduitM () (Entity record) m ()))
forall a b. (a -> b) -> a -> b
$ [Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Entity record) m ()))
forall (m2 :: * -> *) record.
(MonadIO m2, PersistRecordBackend record SqlBackend) =>
[Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Entity record) m2 ()))
SelectSourceRes [Filter record]
a1 [SelectOpt record]
a2

-- | The lifted version of 'Database.Persist.Sql.selectKeys'
selectKeys
  :: (PersistRecordBackend record SqlBackend, MonadResource m, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [SelectOpt record] -> ConduitM () (Key record) m ()
selectKeys :: [Filter record]
-> [SelectOpt record] -> ConduitM () (Key record) m ()
selectKeys [Filter record]
a1 [SelectOpt record]
a2 = m (Acquire (ConduitM () (Key record) m ()))
-> ConduitM () (Key record) m ()
forall (m :: * -> *) i o a.
MonadResource m =>
m (Acquire (ConduitM i o m a)) -> ConduitM i o m a
fromAcquire (m (Acquire (ConduitM () (Key record) m ()))
 -> ConduitM () (Key record) m ())
-> m (Acquire (ConduitM () (Key record) m ()))
-> ConduitM () (Key record) m ()
forall a b. (a -> b) -> a -> b
$ SqlQueryRep record (Acquire (ConduitM () (Key record) m ()))
-> m (Acquire (ConduitM () (Key record) m ()))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record (Acquire (ConduitM () (Key record) m ()))
 -> m (Acquire (ConduitM () (Key record) m ())))
-> SqlQueryRep record (Acquire (ConduitM () (Key record) m ()))
-> m (Acquire (ConduitM () (Key record) m ()))
forall a b. (a -> b) -> a -> b
$ [Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Key record) m ()))
forall (m2 :: * -> *) record.
(MonadIO m2, PersistRecordBackend record SqlBackend) =>
[Filter record]
-> [SelectOpt record]
-> SqlQueryRep record (Acquire (ConduitM () (Key record) m2 ()))
SelectKeysRes [Filter record]
a1 [SelectOpt record]
a2

-- | The lifted version of 'Database.Persist.Sql.selectList'
selectList
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [SelectOpt record] -> m [Entity record]
selectList :: [Filter record] -> [SelectOpt record] -> m [Entity record]
selectList [Filter record]
a1 [SelectOpt record]
a2 = SqlQueryRep record [Entity record] -> m [Entity record]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record [Entity record] -> m [Entity record])
-> SqlQueryRep record [Entity record] -> m [Entity record]
forall a b. (a -> b) -> a -> b
$ [Filter record]
-> [SelectOpt record] -> SqlQueryRep record [Entity record]
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record]
-> [SelectOpt record] -> SqlQueryRep record [Entity record]
SelectList [Filter record]
a1 [SelectOpt record]
a2

-- | The lifted version of 'Database.Persist.Sql.selectKeysList'
selectKeysList
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [SelectOpt record] -> m [Key record]
selectKeysList :: [Filter record] -> [SelectOpt record] -> m [Key record]
selectKeysList [Filter record]
a1 [SelectOpt record]
a2 = SqlQueryRep record [Key record] -> m [Key record]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record [Key record] -> m [Key record])
-> SqlQueryRep record [Key record] -> m [Key record]
forall a b. (a -> b) -> a -> b
$ [Filter record]
-> [SelectOpt record] -> SqlQueryRep record [Key record]
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record]
-> [SelectOpt record] -> SqlQueryRep record [Key record]
SelectKeysList [Filter record]
a1 [SelectOpt record]
a2

-- | The lifted version of 'Database.Persist.Sql.updateWhere'
updateWhere
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [Update record] -> m ()
updateWhere :: [Filter record] -> [Update record] -> m ()
updateWhere [Filter record]
a1 [Update record]
a2 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ [Filter record] -> [Update record] -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record] -> [Update record] -> SqlQueryRep record ()
UpdateWhere [Filter record]
a1 [Update record]
a2

-- | The lifted version of 'Database.Persist.Sql.deleteWhere'
deleteWhere
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> m ()
deleteWhere :: [Filter record] -> m ()
deleteWhere [Filter record]
a1 = SqlQueryRep record () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record () -> m ()) -> SqlQueryRep record () -> m ()
forall a b. (a -> b) -> a -> b
$ [Filter record] -> SqlQueryRep record ()
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record] -> SqlQueryRep record ()
DeleteWhere [Filter record]
a1

-- | The lifted version of 'Database.Persist.Sql.deleteWhereCount'
deleteWhereCount
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> m Int64
deleteWhereCount :: [Filter record] -> m Int64
deleteWhereCount [Filter record]
a1 = SqlQueryRep record Int64 -> m Int64
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record Int64 -> m Int64)
-> SqlQueryRep record Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ [Filter record] -> SqlQueryRep record Int64
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record] -> SqlQueryRep record Int64
DeleteWhereCount [Filter record]
a1

-- | The lifted version of 'Database.Persist.Sql.updateWhereCount'
updateWhereCount
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> [Update record] -> m Int64
updateWhereCount :: [Filter record] -> [Update record] -> m Int64
updateWhereCount [Filter record]
a1 [Update record]
a2 = SqlQueryRep record Int64 -> m Int64
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record Int64 -> m Int64)
-> SqlQueryRep record Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ [Filter record] -> [Update record] -> SqlQueryRep record Int64
forall record.
PersistRecordBackend record SqlBackend =>
[Filter record] -> [Update record] -> SqlQueryRep record Int64
UpdateWhereCount [Filter record]
a1 [Update record]
a2

#if !MIN_VERSION_persistent(2,13,0)
-- | The lifted version of 'Database.Persist.Sql.deleteCascade'
deleteCascade
  :: (DeleteCascade record SqlBackend, Typeable record, MonadSqlQuery m)
  => Key record -> m ()
deleteCascade a1 = runQueryRep $ DeleteCascade a1
#endif

#if !MIN_VERSION_persistent(2,13,0)
-- | The lifted version of 'Database.Persist.Sql.deleteCascadeWhere'
deleteCascadeWhere
  :: (DeleteCascade record SqlBackend, Typeable record, MonadSqlQuery m)
  => [Filter record] -> m ()
deleteCascadeWhere a1 = runQueryRep $ DeleteCascadeWhere a1
#endif

-- | The lifted version of 'Database.Persist.Sql.parseMigration'
parseMigration
  :: (HasCallStack, MonadSqlQuery m)
  => Migration -> m (Either [Text] CautiousMigration)
parseMigration :: Migration -> m (Either [Text] CautiousMigration)
parseMigration Migration
a1 = SqlQueryRep Void (Either [Text] CautiousMigration)
-> m (Either [Text] CautiousMigration)
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void (Either [Text] CautiousMigration)
 -> m (Either [Text] CautiousMigration))
-> SqlQueryRep Void (Either [Text] CautiousMigration)
-> m (Either [Text] CautiousMigration)
forall a b. (a -> b) -> a -> b
$ HasCallStack =>
Migration -> SqlQueryRep Void (Either [Text] CautiousMigration)
Migration -> SqlQueryRep Void (Either [Text] CautiousMigration)
ParseMigration Migration
a1

-- | The lifted version of 'Database.Persist.Sql.parseMigration''
parseMigration'
  :: (HasCallStack, MonadSqlQuery m)
  => Migration -> m CautiousMigration
parseMigration' :: Migration -> m CautiousMigration
parseMigration' Migration
a1 = SqlQueryRep Void CautiousMigration -> m CautiousMigration
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void CautiousMigration -> m CautiousMigration)
-> SqlQueryRep Void CautiousMigration -> m CautiousMigration
forall a b. (a -> b) -> a -> b
$ HasCallStack => Migration -> SqlQueryRep Void CautiousMigration
Migration -> SqlQueryRep Void CautiousMigration
ParseMigration' Migration
a1

-- | The lifted version of 'Database.Persist.Sql.printMigration'
printMigration
  :: (HasCallStack, MonadSqlQuery m)
  => Migration -> m ()
printMigration :: Migration -> m ()
printMigration Migration
a1 = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ HasCallStack => Migration -> SqlQueryRep Void ()
Migration -> SqlQueryRep Void ()
PrintMigration Migration
a1

-- | The lifted version of 'Database.Persist.Sql.showMigration'
showMigration
  :: (HasCallStack, MonadSqlQuery m)
  => Migration -> m [Text]
showMigration :: Migration -> m [Text]
showMigration Migration
a1 = SqlQueryRep Void [Text] -> m [Text]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void [Text] -> m [Text])
-> SqlQueryRep Void [Text] -> m [Text]
forall a b. (a -> b) -> a -> b
$ HasCallStack => Migration -> SqlQueryRep Void [Text]
Migration -> SqlQueryRep Void [Text]
ShowMigration Migration
a1

-- | The lifted version of 'Database.Persist.Sql.getMigration'
getMigration
  :: (HasCallStack, MonadSqlQuery m)
  => Migration -> m [Sql]
getMigration :: Migration -> m [Text]
getMigration Migration
a1 = SqlQueryRep Void [Text] -> m [Text]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void [Text] -> m [Text])
-> SqlQueryRep Void [Text] -> m [Text]
forall a b. (a -> b) -> a -> b
$ HasCallStack => Migration -> SqlQueryRep Void [Text]
Migration -> SqlQueryRep Void [Text]
GetMigration Migration
a1

-- | The lifted version of 'Database.Persist.Sql.runMigration'
runMigration
  :: (MonadSqlQuery m)
  => Migration -> m ()
runMigration :: Migration -> m ()
runMigration Migration
a1 = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ Migration -> SqlQueryRep Void ()
RunMigration Migration
a1

#if MIN_VERSION_persistent(2,10,2)
-- | The lifted version of 'Database.Persist.Sql.runMigrationQuiet'
runMigrationQuiet
  :: (MonadSqlQuery m)
  => Migration -> m [Text]
runMigrationQuiet :: Migration -> m [Text]
runMigrationQuiet Migration
a1 = SqlQueryRep Void [Text] -> m [Text]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void [Text] -> m [Text])
-> SqlQueryRep Void [Text] -> m [Text]
forall a b. (a -> b) -> a -> b
$ Migration -> SqlQueryRep Void [Text]
RunMigrationQuiet Migration
a1
#endif

-- | The lifted version of 'Database.Persist.Sql.runMigrationSilent'
runMigrationSilent
  :: (MonadSqlQuery m)
  => Migration -> m [Text]
runMigrationSilent :: Migration -> m [Text]
runMigrationSilent Migration
a1 = SqlQueryRep Void [Text] -> m [Text]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void [Text] -> m [Text])
-> SqlQueryRep Void [Text] -> m [Text]
forall a b. (a -> b) -> a -> b
$ Migration -> SqlQueryRep Void [Text]
RunMigrationSilent Migration
a1

-- | The lifted version of 'Database.Persist.Sql.runMigrationUnsafe'
runMigrationUnsafe
  :: (MonadSqlQuery m)
  => Migration -> m ()
runMigrationUnsafe :: Migration -> m ()
runMigrationUnsafe Migration
a1 = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ Migration -> SqlQueryRep Void ()
RunMigrationUnsafe Migration
a1

#if MIN_VERSION_persistent(2,10,2)
-- | The lifted version of 'Database.Persist.Sql.runMigrationUnsafeQuiet'
runMigrationUnsafeQuiet
  :: (HasCallStack, MonadSqlQuery m)
  => Migration -> m [Text]
runMigrationUnsafeQuiet :: Migration -> m [Text]
runMigrationUnsafeQuiet Migration
a1 = SqlQueryRep Void [Text] -> m [Text]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void [Text] -> m [Text])
-> SqlQueryRep Void [Text] -> m [Text]
forall a b. (a -> b) -> a -> b
$ HasCallStack => Migration -> SqlQueryRep Void [Text]
Migration -> SqlQueryRep Void [Text]
RunMigrationUnsafeQuiet Migration
a1
#endif

-- | The lifted version of 'Database.Persist.Sql.getFieldName'
getFieldName
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => EntityField record typ -> m Text
getFieldName :: EntityField record typ -> m Text
getFieldName EntityField record typ
a1 = SqlQueryRep record Text -> m Text
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record Text -> m Text)
-> SqlQueryRep record Text -> m Text
forall a b. (a -> b) -> a -> b
$ EntityField record typ -> SqlQueryRep record Text
forall record typ.
PersistRecordBackend record SqlBackend =>
EntityField record typ -> SqlQueryRep record Text
GetFieldName EntityField record typ
a1

-- | The lifted version of 'Database.Persist.Sql.getTableName'
getTableName
  :: (PersistRecordBackend record SqlBackend, Typeable record, MonadSqlQuery m)
  => record -> m Text
getTableName :: record -> m Text
getTableName record
a1 = SqlQueryRep record Text -> m Text
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep record Text -> m Text)
-> SqlQueryRep record Text -> m Text
forall a b. (a -> b) -> a -> b
$ record -> SqlQueryRep record Text
forall record.
PersistRecordBackend record SqlBackend =>
record -> SqlQueryRep record Text
GetTableName record
a1

-- | The lifted version of 'Database.Persist.Sql.withRawQuery'
withRawQuery
  :: (MonadSqlQuery m)
  => Text -> [PersistValue] -> ConduitM [PersistValue] Void IO a -> m a
withRawQuery :: Text -> [PersistValue] -> ConduitM [PersistValue] Void IO a -> m a
withRawQuery Text
a1 [PersistValue]
a2 ConduitM [PersistValue] Void IO a
a3 = SqlQueryRep Void a -> m a
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void a -> m a) -> SqlQueryRep Void a -> m a
forall a b. (a -> b) -> a -> b
$ Text
-> [PersistValue]
-> ConduitM [PersistValue] Void IO a
-> SqlQueryRep Void a
forall a.
Text
-> [PersistValue]
-> ConduitM [PersistValue] Void IO a
-> SqlQueryRep Void a
WithRawQuery Text
a1 [PersistValue]
a2 ConduitM [PersistValue] Void IO a
a3

-- | The lifted version of 'Database.Persist.Sql.rawQueryRes'
rawQueryRes
  :: (MonadIO m2, MonadSqlQuery m)
  => Text -> [PersistValue] -> m (Acquire (ConduitM () [PersistValue] m2 ()))
rawQueryRes :: Text
-> [PersistValue] -> m (Acquire (ConduitM () [PersistValue] m2 ()))
rawQueryRes Text
a1 [PersistValue]
a2 = SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m2 ()))
-> m (Acquire (ConduitM () [PersistValue] m2 ()))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m2 ()))
 -> m (Acquire (ConduitM () [PersistValue] m2 ())))
-> SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m2 ()))
-> m (Acquire (ConduitM () [PersistValue] m2 ()))
forall a b. (a -> b) -> a -> b
$ Text
-> [PersistValue]
-> SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m2 ()))
forall (m2 :: * -> *).
MonadIO m2 =>
Text
-> [PersistValue]
-> SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m2 ()))
RawQueryRes Text
a1 [PersistValue]
a2

-- | The lifted version of 'Database.Persist.Sql.rawQuery'
rawQuery
  :: (MonadResource m, MonadSqlQuery m)
  => Text -> [PersistValue] -> ConduitM () [PersistValue] m ()
rawQuery :: Text -> [PersistValue] -> ConduitM () [PersistValue] m ()
rawQuery Text
a1 [PersistValue]
a2 = m (Acquire (ConduitM () [PersistValue] m ()))
-> ConduitM () [PersistValue] m ()
forall (m :: * -> *) i o a.
MonadResource m =>
m (Acquire (ConduitM i o m a)) -> ConduitM i o m a
fromAcquire (m (Acquire (ConduitM () [PersistValue] m ()))
 -> ConduitM () [PersistValue] m ())
-> m (Acquire (ConduitM () [PersistValue] m ()))
-> ConduitM () [PersistValue] m ()
forall a b. (a -> b) -> a -> b
$ SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m ()))
-> m (Acquire (ConduitM () [PersistValue] m ()))
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m ()))
 -> m (Acquire (ConduitM () [PersistValue] m ())))
-> SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m ()))
-> m (Acquire (ConduitM () [PersistValue] m ()))
forall a b. (a -> b) -> a -> b
$ Text
-> [PersistValue]
-> SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m ()))
forall (m2 :: * -> *).
MonadIO m2 =>
Text
-> [PersistValue]
-> SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m2 ()))
RawQueryRes Text
a1 [PersistValue]
a2

-- | The lifted version of 'Database.Persist.Sql.rawExecute'
rawExecute
  :: (MonadSqlQuery m)
  => Text -> [PersistValue] -> m ()
rawExecute :: Text -> [PersistValue] -> m ()
rawExecute Text
a1 [PersistValue]
a2 = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ Text -> [PersistValue] -> SqlQueryRep Void ()
RawExecute Text
a1 [PersistValue]
a2

-- | The lifted version of 'Database.Persist.Sql.rawExecuteCount'
rawExecuteCount
  :: (MonadSqlQuery m)
  => Text -> [PersistValue] -> m Int64
rawExecuteCount :: Text -> [PersistValue] -> m Int64
rawExecuteCount Text
a1 [PersistValue]
a2 = SqlQueryRep Void Int64 -> m Int64
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void Int64 -> m Int64)
-> SqlQueryRep Void Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ Text -> [PersistValue] -> SqlQueryRep Void Int64
RawExecuteCount Text
a1 [PersistValue]
a2

-- | The lifted version of 'Database.Persist.Sql.rawSql'
rawSql
  :: (RawSql a, MonadSqlQuery m)
  => Text -> [PersistValue] -> m [a]
rawSql :: Text -> [PersistValue] -> m [a]
rawSql Text
a1 [PersistValue]
a2 = SqlQueryRep Void [a] -> m [a]
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void [a] -> m [a]) -> SqlQueryRep Void [a] -> m [a]
forall a b. (a -> b) -> a -> b
$ Text -> [PersistValue] -> SqlQueryRep Void [a]
forall a.
RawSql a =>
Text -> [PersistValue] -> SqlQueryRep Void [a]
RawSql Text
a1 [PersistValue]
a2

-- | The lifted version of 'Database.Persist.Sql.transactionSave'
transactionSave
  :: (MonadSqlQuery m)
  => m ()
transactionSave :: m ()
transactionSave = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ SqlQueryRep Void ()
TransactionSave

#if MIN_VERSION_persistent(2,9,0)
-- | The lifted version of 'Database.Persist.Sql.transactionSaveWithIsolation'
transactionSaveWithIsolation
  :: (MonadSqlQuery m)
  => IsolationLevel -> m ()
transactionSaveWithIsolation :: IsolationLevel -> m ()
transactionSaveWithIsolation IsolationLevel
a1 = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ IsolationLevel -> SqlQueryRep Void ()
TransactionSaveWithIsolation IsolationLevel
a1
#endif

-- | The lifted version of 'Database.Persist.Sql.transactionUndo'
transactionUndo
  :: (MonadSqlQuery m)
  => m ()
transactionUndo :: m ()
transactionUndo = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ SqlQueryRep Void ()
TransactionUndo

#if MIN_VERSION_persistent(2,9,0)
-- | The lifted version of 'Database.Persist.Sql.transactionUndoWithIsolation'
transactionUndoWithIsolation
  :: (MonadSqlQuery m)
  => IsolationLevel -> m ()
transactionUndoWithIsolation :: IsolationLevel -> m ()
transactionUndoWithIsolation IsolationLevel
a1 = SqlQueryRep Void () -> m ()
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void () -> m ()) -> SqlQueryRep Void () -> m ()
forall a b. (a -> b) -> a -> b
$ IsolationLevel -> SqlQueryRep Void ()
TransactionUndoWithIsolation IsolationLevel
a1
#endif

-- | Lift an arbitrary 'SqlPersistT' action into 'MonadSqlQuery'.
--
-- This is unsafe because the action may be rerun. This function should
-- primarily be used to interop with other libraries built on top of
-- persistent.
--
-- Example usage:
--
-- @
-- -- | Run an esqueleto select.
-- select :: (MonadSqlQuery m, E.SqlSelect a r) => E.SqlQuery a -> m [r]
-- select q = unsafeLiftSql "esqueleto-select" (E.select q)
-- @
unsafeLiftSql :: MonadSqlQuery m => Text -> (forall m2. MonadIO m2 => SqlPersistT m2 a) -> m a
unsafeLiftSql :: Text
-> (forall (m2 :: * -> *). MonadIO m2 => SqlPersistT m2 a) -> m a
unsafeLiftSql Text
label forall (m2 :: * -> *). MonadIO m2 => SqlPersistT m2 a
action = SqlQueryRep Void a -> m a
forall (m :: * -> *) record a.
(MonadSqlQuery m, Typeable record) =>
SqlQueryRep record a -> m a
runQueryRep (SqlQueryRep Void a -> m a) -> SqlQueryRep Void a -> m a
forall a b. (a -> b) -> a -> b
$ Text
-> (forall (m2 :: * -> *). MonadIO m2 => SqlPersistT m2 a)
-> SqlQueryRep Void a
forall a.
Text
-> (forall (m :: * -> *). MonadIO m => SqlPersistT m a)
-> SqlQueryRep Void a
UnsafeLiftSql Text
label forall (m2 :: * -> *). MonadIO m2 => SqlPersistT m2 a
action

{- Helpers -}

-- | A helper for functions that return a conduit.
fromAcquire :: MonadResource m => m (Acquire (ConduitM i o m a)) -> ConduitM i o m a
fromAcquire :: m (Acquire (ConduitM i o m a)) -> ConduitM i o m a
fromAcquire m (Acquire (ConduitM i o m a))
getAcquire = do
  (ReleaseKey
_, ConduitM i o m a
conduit) <- m (ReleaseKey, ConduitM i o m a)
-> ConduitT i o m (ReleaseKey, ConduitM i o m a)
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (m (ReleaseKey, ConduitM i o m a)
 -> ConduitT i o m (ReleaseKey, ConduitM i o m a))
-> m (ReleaseKey, ConduitM i o m a)
-> ConduitT i o m (ReleaseKey, ConduitM i o m a)
forall a b. (a -> b) -> a -> b
$ m (Acquire (ConduitM i o m a))
getAcquire m (Acquire (ConduitM i o m a))
-> (Acquire (ConduitM i o m a) -> m (ReleaseKey, ConduitM i o m a))
-> m (ReleaseKey, ConduitM i o m a)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Acquire (ConduitM i o m a) -> m (ReleaseKey, ConduitM i o m a)
forall (m :: * -> *) a.
MonadResource m =>
Acquire a -> m (ReleaseKey, a)
allocateAcquire
  ConduitM i o m a
conduit