Safe Haskell | None |
---|---|
Language | Haskell2010 |
Defines the SqlQueryT
monad transformer that has a MonadSqlQuery
instance
to execute persistent
database operations.
Usage:
myFunction :: (MonadSqlQuery m, MonadIO m) => m () myFunction = do insert_ $ Person { name = "Alice", age = Just 25 } insert_ $ Person { name = "Bob", age = Nothing } -- some other business logic personList <- selectList [] [] liftIO $ print (personList :: [Person]) -- everything in here will run in a transaction withTransaction $ selectFirst [PersonAge >. 30] [] >>= \case Nothing -> insert_ $ Person { name = "Claire", age = Just 50 } Just (Entity key person) -> replace key person{ age = Just (age person - 10) } -- some more business logic return ()
Synopsis
- class Monad m => MonadSqlQuery m
- withTransaction :: MonadSqlQuery m => m a -> m a
- data SqlQueryRep record a where
- Get :: PersistRecordBackend record SqlBackend => Key record -> SqlQueryRep record (Maybe record)
- GetMany :: PersistRecordBackend record SqlBackend => [Key record] -> SqlQueryRep record (Map (Key record) record)
- GetJust :: PersistRecordBackend record SqlBackend => Key record -> SqlQueryRep record record
- GetJustEntity :: PersistRecordBackend record SqlBackend => Key record -> SqlQueryRep record (Entity record)
- GetEntity :: PersistRecordBackend record SqlBackend => Key record -> SqlQueryRep record (Maybe (Entity record))
- BelongsTo :: (PersistEntity record1, PersistRecordBackend record2 SqlBackend) => (record1 -> Maybe (Key record2)) -> record1 -> SqlQueryRep (record1, record2) (Maybe record2)
- BelongsToJust :: (PersistEntity record1, PersistRecordBackend record2 SqlBackend) => (record1 -> Key record2) -> record1 -> SqlQueryRep (record1, record2) record2
- Insert :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record (Key record)
- Insert_ :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record ()
- InsertMany :: PersistRecordBackend record SqlBackend => [record] -> SqlQueryRep record [Key record]
- InsertMany_ :: PersistRecordBackend record SqlBackend => [record] -> SqlQueryRep record ()
- InsertEntityMany :: PersistRecordBackend record SqlBackend => [Entity record] -> SqlQueryRep record ()
- InsertKey :: PersistRecordBackend record SqlBackend => Key record -> record -> SqlQueryRep record ()
- Repsert :: PersistRecordBackend record SqlBackend => Key record -> record -> SqlQueryRep record ()
- RepsertMany :: PersistRecordBackend record SqlBackend => [(Key record, record)] -> SqlQueryRep record ()
- Replace :: PersistRecordBackend record SqlBackend => Key record -> record -> SqlQueryRep record ()
- Delete :: PersistRecordBackend record SqlBackend => Key record -> SqlQueryRep record ()
- Update :: PersistRecordBackend record SqlBackend => Key record -> [Update record] -> SqlQueryRep record ()
- UpdateGet :: PersistRecordBackend record SqlBackend => Key record -> [Update record] -> SqlQueryRep record record
- InsertEntity :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record (Entity record)
- InsertRecord :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record record
- GetBy :: PersistRecordBackend record SqlBackend => Unique record -> SqlQueryRep record (Maybe (Entity record))
- GetByValue :: (PersistRecordBackend record SqlBackend, AtLeastOneUniqueKey record) => record -> SqlQueryRep record (Maybe (Entity record))
- CheckUnique :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record (Maybe (Unique record))
- CheckUniqueUpdateable :: PersistRecordBackend record SqlBackend => Entity record -> SqlQueryRep record (Maybe (Unique record))
- DeleteBy :: PersistRecordBackend record SqlBackend => Unique record -> SqlQueryRep record ()
- InsertUnique :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record (Maybe (Key record))
- Upsert :: (PersistRecordBackend record SqlBackend, OnlyOneUniqueKey record) => record -> [Update record] -> SqlQueryRep record (Entity record)
- UpsertBy :: PersistRecordBackend record SqlBackend => Unique record -> record -> [Update record] -> SqlQueryRep record (Entity record)
- PutMany :: PersistRecordBackend record SqlBackend => [record] -> SqlQueryRep record ()
- InsertBy :: (PersistRecordBackend record SqlBackend, AtLeastOneUniqueKey record) => record -> SqlQueryRep record (Either (Entity record) (Key record))
- InsertUniqueEntity :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record (Maybe (Entity record))
- ReplaceUnique :: (PersistRecordBackend record SqlBackend, Eq (Unique record), Eq record) => Key record -> record -> SqlQueryRep record (Maybe (Unique record))
- OnlyUnique :: (PersistRecordBackend record SqlBackend, OnlyOneUniqueKey record) => record -> SqlQueryRep record (Unique record)
- SelectSourceRes :: (MonadIO m2, PersistRecordBackend record SqlBackend) => [Filter record] -> [SelectOpt record] -> SqlQueryRep record (Acquire (ConduitM () (Entity record) m2 ()))
- SelectFirst :: PersistRecordBackend record SqlBackend => [Filter record] -> [SelectOpt record] -> SqlQueryRep record (Maybe (Entity record))
- SelectKeysRes :: (MonadIO m2, PersistRecordBackend record SqlBackend) => [Filter record] -> [SelectOpt record] -> SqlQueryRep record (Acquire (ConduitM () (Key record) m2 ()))
- Count :: PersistRecordBackend record SqlBackend => [Filter record] -> SqlQueryRep record Int
- Exists :: PersistRecordBackend record SqlBackend => [Filter record] -> SqlQueryRep record Bool
- SelectList :: PersistRecordBackend record SqlBackend => [Filter record] -> [SelectOpt record] -> SqlQueryRep record [Entity record]
- SelectKeysList :: PersistRecordBackend record SqlBackend => [Filter record] -> [SelectOpt record] -> SqlQueryRep record [Key record]
- UpdateWhere :: PersistRecordBackend record SqlBackend => [Filter record] -> [Update record] -> SqlQueryRep record ()
- DeleteWhere :: PersistRecordBackend record SqlBackend => [Filter record] -> SqlQueryRep record ()
- DeleteWhereCount :: PersistRecordBackend record SqlBackend => [Filter record] -> SqlQueryRep record Int64
- UpdateWhereCount :: PersistRecordBackend record SqlBackend => [Filter record] -> [Update record] -> SqlQueryRep record Int64
- DeleteCascade :: DeleteCascade record SqlBackend => Key record -> SqlQueryRep record ()
- DeleteCascadeWhere :: DeleteCascade record SqlBackend => [Filter record] -> SqlQueryRep record ()
- ParseMigration :: HasCallStack => Migration -> SqlQueryRep Void (Either [Text] CautiousMigration)
- ParseMigration' :: HasCallStack => Migration -> SqlQueryRep Void CautiousMigration
- PrintMigration :: HasCallStack => Migration -> SqlQueryRep Void ()
- ShowMigration :: HasCallStack => Migration -> SqlQueryRep Void [Text]
- GetMigration :: HasCallStack => Migration -> SqlQueryRep Void [Sql]
- RunMigration :: Migration -> SqlQueryRep Void ()
- RunMigrationQuiet :: Migration -> SqlQueryRep Void [Text]
- RunMigrationSilent :: Migration -> SqlQueryRep Void [Text]
- RunMigrationUnsafe :: Migration -> SqlQueryRep Void ()
- RunMigrationUnsafeQuiet :: HasCallStack => Migration -> SqlQueryRep Void [Text]
- GetFieldName :: PersistRecordBackend record SqlBackend => EntityField record typ -> SqlQueryRep record Text
- GetTableName :: PersistRecordBackend record SqlBackend => record -> SqlQueryRep record Text
- WithRawQuery :: Text -> [PersistValue] -> ConduitM [PersistValue] Void IO a -> SqlQueryRep Void a
- RawQueryRes :: MonadIO m2 => Text -> [PersistValue] -> SqlQueryRep Void (Acquire (ConduitM () [PersistValue] m2 ()))
- RawExecute :: Text -> [PersistValue] -> SqlQueryRep Void ()
- RawExecuteCount :: Text -> [PersistValue] -> SqlQueryRep Void Int64
- RawSql :: RawSql a => Text -> [PersistValue] -> SqlQueryRep Void [a]
- TransactionSave :: SqlQueryRep Void ()
- TransactionSaveWithIsolation :: IsolationLevel -> SqlQueryRep Void ()
- TransactionUndo :: SqlQueryRep Void ()
- TransactionUndoWithIsolation :: IsolationLevel -> SqlQueryRep Void ()
- data SqlQueryT m a
- runSqlQueryT :: Pool SqlBackend -> SqlQueryT m a -> m a
- module Database.Persist.Monad.Shim
Type class for executing database queries
class Monad m => MonadSqlQuery m Source #
The type-class for monads that can run persistent database queries.
Instances
withTransaction :: MonadSqlQuery m => m a -> m a Source #
Run all queries in the given action using the same database connection.
You should make sure to not fork any threads within this action. This will almost certainly cause problems. https://github.com/brandonchinn178/persistent-mtl/issues/7
data SqlQueryRep record a where Source #
The data type containing a constructor for each persistent function we'd
like to lift into MonadSqlQuery
.
The record
type parameter contains the PersistEntity
types used in a
given function.
We're using a free-monads-like technique here to allow us to introspect
persistent functions in MonadSqlQuery
, e.g. to
mock out persistent calls in tests.
Instances
Typeable record => Show (SqlQueryRep record a) Source # | |
Defined in Database.Persist.Monad.SqlQueryRep showsPrec :: Int -> SqlQueryRep record a -> ShowS # show :: SqlQueryRep record a -> String # showList :: [SqlQueryRep record a] -> ShowS # |
SqlQueryT monad transformer
The monad transformer that implements MonadSqlQuery
.
Instances
MonadTrans SqlQueryT Source # | |
Defined in Database.Persist.Monad | |
Monad m => Monad (SqlQueryT m) Source # | |
Functor m => Functor (SqlQueryT m) Source # | |
Applicative m => Applicative (SqlQueryT m) Source # | |
Defined in Database.Persist.Monad | |
MonadIO m => MonadIO (SqlQueryT m) Source # | |
Defined in Database.Persist.Monad | |
MonadUnliftIO m => MonadUnliftIO (SqlQueryT m) Source # | |
Defined in Database.Persist.Monad | |
MonadResource m => MonadResource (SqlQueryT m) Source # | |
Defined in Database.Persist.Monad liftResourceT :: ResourceT IO a -> SqlQueryT m a # | |
MonadUnliftIO m => MonadSqlQuery (SqlQueryT m) Source # | |
Defined in Database.Persist.Monad runQueryRep :: Typeable record => SqlQueryRep record a -> SqlQueryT m a Source # withTransaction :: SqlQueryT m a -> SqlQueryT m a Source # |
runSqlQueryT :: Pool SqlBackend -> SqlQueryT m a -> m a Source #
Run the SqlQueryT
monad transformer with the given backend.
Lifted functions
module Database.Persist.Monad.Shim