sqlite-simple-0.4.18.2: Mid-Level SQLite client library
Copyright(c) 2011-2012 Leon P Smith
(c) 2012-2013 Janne Hellsten
LicenseBSD3
MaintainerJanne Hellsten <jjhellst@gmail.com>
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Database.SQLite.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

Documentation

class GFromRow f where #

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

Methods

gfromRow :: RowParser (f a) #

Instances

Instances details
GFromRow (U1 :: Type -> Type) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

gfromRow :: RowParser (U1 a) #

(GFromRow a, GFromRow b) => GFromRow (a :*: b) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

gfromRow :: RowParser ((a :*: b) a0) #

FromField a => GFromRow (K1 i a :: Type -> Type) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

gfromRow :: RowParser (K1 i a a0) #

GFromRow a => GFromRow (M1 i c a) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

gfromRow :: RowParser (M1 i c a a0) #

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 sqlite-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 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.

Minimal complete definition

Nothing

Methods

fromRow :: RowParser a #

default fromRow :: Generic a => GFromRow (Rep a) => RowParser a #

Instances

Instances details
FromField a => FromRow (Only a) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (Only a) #

FromField a => FromRow [a] # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser [a] #

(FromRow a, FromRow b) => FromRow (a :. b) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (a :. b) #

(FromField a, FromField b) => FromRow (a, b) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (a, b) #

(FromField a, FromField b, FromField c) => FromRow (a, b, c) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (a, b, c) #

(FromField a, FromField b, FromField c, FromField d) => FromRow (a, b, c, d) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (a, b, c, d) #

(FromField a, FromField b, FromField c, FromField d, FromField e) => FromRow (a, b, c, d, e) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (a, b, c, d, e) #

(FromField a, FromField b, FromField c, FromField d, FromField e, FromField f) => FromRow (a, b, c, d, e, f) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (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) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (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) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (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) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (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) # 
Instance details

Defined in Database.SQLite.Simple.FromRow

Methods

fromRow :: RowParser (a, b, c, d, e, f, g, h, i, j) #

data RowParser a #

Instances

Instances details
Alternative RowParser # 
Instance details

Defined in Database.SQLite.Simple.Internal

Applicative RowParser # 
Instance details

Defined in Database.SQLite.Simple.Internal

Methods

pure :: a -> RowParser a

(<*>) :: RowParser (a -> b) -> RowParser a -> RowParser b

liftA2 :: (a -> b -> c) -> RowParser a -> RowParser b -> RowParser c

(*>) :: RowParser a -> RowParser b -> RowParser b

(<*) :: RowParser a -> RowParser b -> RowParser a

Functor RowParser # 
Instance details

Defined in Database.SQLite.Simple.Internal

Methods

fmap :: (a -> b) -> RowParser a -> RowParser b

(<$) :: a -> RowParser b -> RowParser a

Monad RowParser # 
Instance details

Defined in Database.SQLite.Simple.Internal

Methods

(>>=) :: RowParser a -> (a -> RowParser b) -> RowParser b

(>>) :: RowParser a -> RowParser b -> RowParser b

return :: a -> RowParser a

MonadPlus RowParser # 
Instance details

Defined in Database.SQLite.Simple.Internal

Methods

mzero :: RowParser a

mplus :: RowParser a -> RowParser a -> RowParser a