opaleye-0.5.0.0: An SQL-generating DSL targeting PostgreSQL

Safe HaskellNone
LanguageHaskell98

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;

Synopsis

Documentation

runInsert :: Connection -> Table columns columns' -> columns -> IO Int64 Source

Returns the number of rows inserted

This will be deprecated in a future release. Use runInsertMany instead.

runInsertMany :: Connection -> Table columns columns' -> [columns] -> IO Int64 Source

Returns the number of rows inserted

runInsertReturning :: Default QueryRunner returned haskells => Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> returned) -> 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 a future release. Use runInsertManyReturning instead.

runInsertManyReturning :: Default QueryRunner returned haskells => Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> returned) -> IO [haskells] Source

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.

runUpdate :: Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> IO Int64 Source

Where the predicate is true, update rows using the supplied function.

runUpdateReturning :: Default QueryRunner returned haskells => Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> returned) -> IO [haskells] Source

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.

runDelete :: Connection -> Table a columnsR -> (columnsR -> Column PGBool) -> IO Int64 Source

Delete rows where the predicate is true.

runInsertReturningExplicit :: QueryRunner returned haskells -> Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> returned) -> 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 returned haskells -> Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> returned) -> 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 returned haskells -> Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> returned) -> 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.

arrangeInsert :: Table columns a -> columns -> SqlInsert Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeInsertSql :: Table columns a -> columns -> String Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeInsertMany :: Table columns a -> NonEmpty columns -> SqlInsert Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeInsertManySql :: Table columns a -> NonEmpty columns -> String Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeUpdate :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> SqlUpdate Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeUpdateSql :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> String Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeDelete :: Table a columnsR -> (columnsR -> Column PGBool) -> SqlDelete Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeDeleteSql :: Table a columnsR -> (columnsR -> Column PGBool) -> String Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeInsertManyReturning :: Unpackspec returned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> returned) -> Returning SqlInsert Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeInsertManyReturningSql :: Unpackspec returned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> returned) -> String Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeUpdateReturning :: Unpackspec returned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> returned) -> Returning SqlUpdate Source

For internal use only. Do not use. Will be removed in a subsequent release.

arrangeUpdateReturningSql :: Unpackspec returned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> returned) -> String Source

For internal use only. Do not use. Will be removed in a subsequent release.