opaleye-0.5.1.0: An SQL-generating DSL targeting PostgreSQL

Safe HaskellNone
LanguageHaskell2010

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

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

Returns the number of rows inserted

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.

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.

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.

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.

data Unpackspec columns columns' Source #

Instances

SumProfunctor Unpackspec Source # 

Methods

(+++!) :: Unpackspec a b -> Unpackspec a' b' -> Unpackspec (Either a a') (Either b b') #

ProductProfunctor Unpackspec Source # 

Methods

empty :: Unpackspec () () #

(***!) :: Unpackspec a b -> Unpackspec a' b' -> Unpackspec (a, a') (b, b') #

Profunctor Unpackspec Source # 

Methods

dimap :: (a -> b) -> (c -> d) -> Unpackspec b c -> Unpackspec a d #

lmap :: (a -> b) -> Unpackspec b c -> Unpackspec a c #

rmap :: (b -> c) -> Unpackspec a b -> Unpackspec a c #

(#.) :: Coercible * c b => (b -> c) -> Unpackspec a b -> Unpackspec a c #

(.#) :: Coercible * b a => Unpackspec b c -> (a -> b) -> Unpackspec a c #

Default Unpackspec (Column a) (Column a) Source # 

Methods

def :: Unpackspec (Column a) (Column a) #

Functor (Unpackspec a) Source # 

Methods

fmap :: (a -> b) -> Unpackspec a a -> Unpackspec a b #

(<$) :: a -> Unpackspec a b -> Unpackspec a a #

Applicative (Unpackspec a) Source # 

Methods

pure :: a -> Unpackspec a a #

(<*>) :: Unpackspec a (a -> b) -> Unpackspec a a -> Unpackspec a b #

(*>) :: Unpackspec a a -> Unpackspec a b -> Unpackspec a b #

(<*) :: Unpackspec a a -> Unpackspec a b -> Unpackspec a a #