Copyright | (c) 2011-2012 Leon P Smith (c) 2012-2013 Janne Hellsten |
---|---|
License | BSD3 |
Maintainer | Janne Hellsten <jjhellst@gmail.com> |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
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.
Documentation
class GFromRow f where Source #
Generic derivation of FromRow
.
Instantiating FromRow
can in some cases be quite tedious. Luckily
we can derive it generically in some cases where the type at hand
has a Generic
instance. The current implementation only works
for a (n-ary) product types. So we would not be able to
e.g. derive a FromRow
instance for
data Bool = True | False
We can, however, derive a generic instance for the User
type
(see the example in FromRow
).
Since: 0.4.18.1
class FromRow a where Source #
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 sqlite-simple, which is often useful. For example, here's an instance for a user-defined pair:
data User = User { name :: String, fileQuota :: Int } instanceFromRow
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 the caveats associated with user-defined implementations of
fromRow
.
Generic implementation
Since version 0.4.18.1 it is possible in some cases to derive a
generic implementation for FromRow
. With a Generic
instance
for User
, the example above could be written:
instance FromRow
User where
With -XDeriveAnyClass -XDerivingStrategies
the same can be written:
deriving anyclass instance FromRow
User
For more details refer to GFromRow
.
Nothing
Instances
fieldWith :: FieldParser a -> RowParser a Source #