postgresql-simple-0.2.4.1: Mid-Level PostgreSQL client library

Portability | portable
Stability | experimental
Maintainer | Leon P Smith <leon@melding-monads.com>
Safe Haskell | None

Database.PostgreSQL.Simple.FromRow

Description

The `FromRow` typeclass, for converting a row of results returned by a SQL query into a more useful Haskell representation.

Predefined instances are provided for tuples containing up to ten elements.

Synopsis

- class FromRow a where
  - fromRow :: RowParser a
- data RowParser a
- field :: FromField a => RowParser a
- fieldWith :: FieldParser a -> RowParser a
- numFieldsRemaining :: RowParser Int

# Documentation

class FromRow a where

A collection type that can be converted from a sequence of fields. Instances are provided for tuples up to 10 elements and lists of any length.

Note that instances can defined outside of postgresql-simple, which is often useful. For example, here's an instance for a user-defined pair:

    data User = User { name :: String, fileQuota :: Int }

    instance FromRow User where
         fromRow = User <$> field <*> field

The number of calls to `field` must match the number of fields returned in a single row of the query result. Otherwise, a `ConversionFailed` exception will be thrown.

Note that `field` evaluates it's result to WHNF, so the caveats listed in previous versions of postgresql-simple no longer apply. Instead, look at the caveats associated with user-defined implementations of `fromRow`.

Methods

fromRow :: RowParser a

Instances

FromField a => FromRow [a] |
FromField a => FromRow (Only a) |
(FromField a, FromField b) => FromRow (a, b) |
(FromRow a, FromRow b) => FromRow (:. a b) |
(FromField a, FromField b, FromField c) => FromRow (a, b, c) |
(FromField a, FromField b, FromField c, FromField d) => FromRow (a, b, c, d) |
(FromField a, FromField b, FromField c, FromField d, FromField e) => FromRow (a, b, c, d, e) |
(FromField a, FromField b, FromField c, FromField d, FromField e, FromField f) => FromRow (a, b, c, d, e, f) |
(FromField a, FromField b, FromField c, FromField d, FromField e, FromField f, FromField g) => FromRow (a, b, c, d, e, f, g) |
(FromField a, FromField b, FromField c, FromField d, FromField e, FromField f, FromField g, FromField h) => FromRow (a, b, c, d, e, f, g, h) |
(FromField a, FromField b, FromField c, FromField d, FromField e, FromField f, FromField g, FromField h, FromField i) => FromRow (a, b, c, d, e, f, g, h, i) |
(FromField a, FromField b, FromField c, FromField d, FromField e, FromField f, FromField g, FromField h, FromField i, FromField j) => FromRow (a, b, c, d, e, f, g, h, i, j) |

data RowParser a

Instances

Monad RowParser |
Functor RowParser |
Applicative RowParser |
Alternative RowParser |

field :: FromField a => RowParser a

fieldWith :: FieldParser a -> RowParser a

numFieldsRemaining :: RowParser Int