squeal-postgresql-0.9.0.0: Squeal PostgreSQL Library
Copyright(c) Eitan Chatav 2019
Maintainereitan@morphism.tech
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Squeal.PostgreSQL.Session.Result

Description

Get values from a Result.

Synopsis

Documentation

data Result y where Source #

Results are generated by executing Statements in a MonadPQ.

They contain an underlying Result and a DecodeRow.

Constructors

Result :: SListI row => DecodeRow row y -> Result -> Result y 

Instances

Instances details
Functor Result Source # 
Instance details

Defined in Squeal.PostgreSQL.Session.Result

Methods

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

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

class Monad m => MonadResult m where Source #

A MonadResult operation extracts values from the Result of a MonadPQ operation. There is no need to define instances of MonadResult. An instance of MonadIO implies an instance of MonadResult. However, the constraint MonadResult does not imply the constraint MonadIO.

Methods

getRow :: Row -> Result y -> m y Source #

Get a row corresponding to a given row number from a Result, throwing an exception if the row number is out of bounds.

getRows :: Result y -> m [y] Source #

Get all rows from a Result.

firstRow :: Result y -> m (Maybe y) Source #

Get the first row if possible from a Result.

ntuples :: Result y -> m Row Source #

Returns the number of rows (tuples) in the query result.

nfields :: Result y -> m Column Source #

Returns the number of columns (fields) in the query result.

cmdStatus :: Result y -> m Text Source #

Returns the command status tag from the SQL command that generated the Result. Commonly this is just the name of the command, but it might include additional data such as the number of rows processed.

cmdTuples :: Result y -> m (Maybe Row) Source #

Returns the number of rows affected by the SQL command. This function returns Just the number of rows affected by the SQL statement that generated the Result. This function can only be used following the execution of a SELECT, CREATE TABLE AS, INSERT, UPDATE, DELETE, MOVE, FETCH, or COPY statement,or an EXECUTE of a prepared query that contains an INSERT, UPDATE, or DELETE statement. If the command that generated the PGresult was anything else, cmdTuples returns Nothing.

resultStatus :: Result y -> m ExecStatus Source #

Returns the result status of the command.

okResult :: Result y -> m () Source #

Check if a Result's status is either CommandOk or TuplesOk otherwise throw a SQLException.

resultErrorMessage :: Result y -> m (Maybe ByteString) Source #

Returns the error message most recently generated by an operation on the connection.

resultErrorCode :: Result y -> m (Maybe ByteString) Source #

Returns the error code most recently generated by an operation on the connection.

https://www.postgresql.org/docs/current/static/errcodes-appendix.html

Instances

Instances details
(Monad io, MonadIO io) => MonadResult io Source # 
Instance details

Defined in Squeal.PostgreSQL.Session.Result

liftResult :: MonadIO io => (Result -> IO x) -> Result y -> io x Source #

Lifts actions on results from LibPQ.

nextRow Source #

Arguments

:: MonadIO io 
=> Row

total number of rows

-> Result y

result

-> Row

row number

-> io (Maybe (Row, y)) 

Intended to be used for unfolding in streaming libraries, nextRow takes a total number of rows (which can be found with ntuples) and a Result and given a row number if it's too large returns Nothing, otherwise returning the row along with the next row number.