| Portability | portable |
|---|---|
| Stability | experimental |
| Maintainer | Bryan O'Sullivan <bos@mailrank.com> |
Database.MySQL.Simple.QueryResults
Description
The QueryResults typeclass, for converting a row of results
returned by a SQL query into a more useful Haskell representation.
- class QueryResults a where
- convertResults :: [Field] -> [Maybe ByteString] -> a
- convertError :: [Field] -> [Maybe ByteString] -> Int -> a
Documentation
class QueryResults a whereSource
A collection type that can be converted from a list of strings.
Instances should use the convert method of the Result class
to perform conversion of each element of the collection.
This example instance demonstrates how to convert a two-column row
into a Haskell pair. Each field in the metadata is paired up with
each value from the row, and the two are passed to convert.
instance (Resulta,Resultb) =>QueryResults(a,b) whereconvertResults[fa,fb] [va,vb] = (a,b) where !a =convertfa va !b =convertfb vbconvertResultsfs vs =convertErrorfs vs
Notice that this instance evaluates each element to WHNF before constructing the pair. By doing this, we guarantee two important properties:
- Keep resource usage under control by preventing the construction of potentially long-lived thunks.
- Ensure that any
ResultErrorthat might arise is thrown immediately, rather than some place later in application code that cannot handle it.
Methods
convertResults :: [Field] -> [Maybe ByteString] -> aSource
Convert values from a row into a Haskell collection.
This function will throw a ResultError if conversion of the
collection fails.
Instances
| Result a => QueryResults (Only a) | |
| (Result a, Result b) => QueryResults (a, b) | |
| (Result a, Result b, Result c) => QueryResults (a, b, c) | |
| (Result a, Result b, Result c, Result d) => QueryResults (a, b, c, d) | |
| (Result a, Result b, Result c, Result d, Result e) => QueryResults (a, b, c, d, e) | |
| (Result a, Result b, Result c, Result d, Result e, Result f) => QueryResults (a, b, c, d, e, f) | |
| (Result a, Result b, Result c, Result d, Result e, Result f, Result g) => QueryResults (a, b, c, d, e, f, g) | |
| (Result a, Result b, Result c, Result d, Result e, Result f, Result g, Result h) => QueryResults (a, b, c, d, e, f, g, h) | |
| (Result a, Result b, Result c, Result d, Result e, Result f, Result g, Result h, Result i) => QueryResults (a, b, c, d, e, f, g, h, i) | |
| (Result a, Result b, Result c, Result d, Result e, Result f, Result g, Result h, Result i, Result j) => QueryResults (a, b, c, d, e, f, g, h, i, j) |
convertError :: [Field] -> [Maybe ByteString] -> Int -> aSource
Throw a ConversionFailed exception, indicating a mismatch
between the number of columns in the Field and row, and the
number in the collection to be converted to.