| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Opaleye.Manipulation
Description
Inserts, updates and deletes
Please note that you currently you can only INSERT or UPDATE with constant values, not the result of SELECTS. That is, you can generate SQL of the form
INSERT INTO thetable (John, 1);
but not
INSERT INTO thetable
   SELECT John,
   (SELECT num FROM thetable ORDER BY num DESC LIMIT 1) + 1;
- runInsertMany :: Connection -> Table columns columns' -> [columns] -> IO Int64
- runInsertManyReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> columnsReturned) -> IO [haskells]
- runUpdate :: Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> IO Int64
- runUpdateReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> IO [haskells]
- runDelete :: Connection -> Table a columnsR -> (columnsR -> Column PGBool) -> IO Int64
- runInsertReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells]
- runInsertManyReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> columnsReturned) -> IO [haskells]
- runUpdateReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> IO [haskells]
- runInsert :: Connection -> Table columns columns' -> columns -> IO Int64
- runInsertReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells]
- arrangeInsert :: Table columns a -> columns -> SqlInsert
- arrangeInsertSql :: Table columns a -> columns -> String
- arrangeInsertMany :: Table columns a -> NonEmpty columns -> SqlInsert
- arrangeInsertManySql :: Table columns a -> NonEmpty columns -> String
- arrangeUpdate :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> SqlUpdate
- arrangeUpdateSql :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> String
- arrangeDelete :: Table a columnsR -> (columnsR -> Column PGBool) -> SqlDelete
- arrangeDeleteSql :: Table a columnsR -> (columnsR -> Column PGBool) -> String
- arrangeInsertManyReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> Returning SqlInsert
- arrangeInsertManyReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> String
- arrangeUpdateReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> Returning SqlUpdate
- arrangeUpdateReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> String
- data Unpackspec columns columns'
Manipulation functions
Arguments
| :: Connection | |
| -> Table columns columns' | Table to insert into | 
| -> [columns] | Rows to insert | 
| -> IO Int64 | Number of rows inserted | 
Insert rows into a table
runInsertManyReturning Source #
Arguments
| :: Default QueryRunner columnsReturned haskells | |
| => Connection | |
| -> Table columnsW columnsR | Table to insert into | 
| -> [columnsW] | Rows to insert | 
| -> (columnsR -> columnsReturned) | Function  | 
| -> IO [haskells] | Returned rows after  | 
Insert rows into a table and return a function of the inserted rows
runInsertManyReturning's use of the Default typeclass means that the
 compiler will have trouble inferring types.  It is strongly
 recommended that you provide full type signatures when using
 runInsertManyReturning.
Arguments
| :: Connection | |
| -> Table columnsW columnsR | Table to update | 
| -> (columnsR -> columnsW) | Update function to apply to chosen rows | 
| -> (columnsR -> Column PGBool) | Predicate function  | 
| -> IO Int64 | The number of rows updated | 
Update rows in a table.
Be careful: providing Nothing to a column created by optional
 updates the column to its default value.  Many users have been
 confused by this because they assume it means that the column is to
 be left unchanged.
Arguments
| :: Default QueryRunner columnsReturned haskells | |
| => Connection | |
| -> Table columnsW columnsR | Table to update | 
| -> (columnsR -> columnsW) | Update function to apply to chosen rows | 
| -> (columnsR -> Column PGBool) | Predicate function  | 
| -> (columnsR -> columnsReturned) | Functon  | 
| -> IO [haskells] | Returned rows after  | 
Update rows in a table and return a function of the updated rows
Be careful: providing Nothing to a column created by optional
 updates the column to its default value.  Many users have been
 confused by this because they assume it means that the column is to
 be left unchanged.
runUpdateReturning's use of the Default typeclass means
 that the compiler will have trouble inferring types.  It is
 strongly recommended that you provide full type signatures when
 using runInsertReturning.
Arguments
| :: Connection | |
| -> Table a columnsR | Table to delete rows from | 
| -> (columnsR -> Column PGBool) | Predicate function  | 
| -> IO Int64 | The number of rows deleted | 
Delete rows from a table
Explicit versions
runInsertReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells] Source #
You probably don't need this, but can just use
 runInsertReturning instead.  You only need it if you want to run
 an INSERT RETURNING statement but need to be explicit about the
 QueryRunner.
runInsertManyReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> columnsReturned) -> IO [haskells] Source #
You probably don't need this, but can just use
 runInsertManyReturning instead.  You only need it if you want to
 run an UPDATE RETURNING statement but need to be explicit about the
 QueryRunner.
runUpdateReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> IO [haskells] Source #
You probably don't need this, but can just use
 runUpdateReturning instead.  You only need it if you want to run
 an UPDATE RETURNING statement but need to be explicit about the
 QueryRunner.
Deprecated versions
runInsert :: Connection -> Table columns columns' -> columns -> IO Int64 Source #
Returns the number of rows inserted
This will be deprecated in version 0.6.  Use runInsertMany
 instead.
runInsertReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells] Source #
runInsertReturning's use of the Default typeclass means that the
 compiler will have trouble inferring types.  It is strongly
 recommended that you provide full type signatures when using
 runInsertReturning.
This will be deprecated in version 0.6.  Use
 runInsertManyReturning instead.
arrangeInsert :: Table columns a -> columns -> SqlInsert Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertSql :: Table columns a -> columns -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertMany :: Table columns a -> NonEmpty columns -> SqlInsert Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertManySql :: Table columns a -> NonEmpty columns -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdate :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> SqlUpdate Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdateSql :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeDelete :: Table a columnsR -> (columnsR -> Column PGBool) -> SqlDelete Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeDeleteSql :: Table a columnsR -> (columnsR -> Column PGBool) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertManyReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> Returning SqlInsert Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertManyReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdateReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> Returning SqlUpdate Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdateReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
Other
data Unpackspec columns columns' Source #
Instances