- Unit
- Boolean logic
- Equality and Ordering
- Conditionals
- Maybe
- Either
- List Construction
- List Operations
- Special folds
- Sublists
- Searching Lists
- Zipping and Unzipping Lists
- Set operations
- Tuple Projection Functions
- Conversions between numeric types
- Convert Haskell values into DB queries
- Rebind Monadic Combinators
- Missing Combinators
- Data Types
- Type Classes
- Template Haskell: Creating Table Representations
This module is intended to be imported qualified
, to avoid name clashes
with Prelude functions. For example:
import qualified Database.DSH as Q import Database.DSH (Q)
Alternatively you can hide Prelude and import this module like this:
import Prelude () import Database.DSH
In this case you still get Prelude definitions that are not provided by Database.DSH.
- unit :: Q ()
- false :: Q Bool
- true :: Q Bool
- not :: Q Bool -> Q Bool
- (&&) :: Q Bool -> Q Bool -> Q Bool
- (||) :: Q Bool -> Q Bool -> Q Bool
- eq :: (Eq a, QA a) => Q a -> Q a -> Q Bool
- (==) :: (Eq a, QA a) => Q a -> Q a -> Q Bool
- neq :: (Eq a, QA a) => Q a -> Q a -> Q Bool
- (/=) :: (Eq a, QA a) => Q a -> Q a -> Q Bool
- lt :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- (<) :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- lte :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- (<=) :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- gte :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- (>=) :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- gt :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- (>) :: (Ord a, QA a) => Q a -> Q a -> Q Bool
- min :: forall a. (Ord a, QA a) => Q a -> Q a -> Q a
- max :: forall a. (Ord a, QA a) => Q a -> Q a -> Q a
- bool :: QA a => Q a -> Q a -> Q Bool -> Q a
- cond :: forall a. QA a => Q Bool -> Q a -> Q a -> Q a
- (?) :: QA a => Q Bool -> (Q a, Q a) -> Q a
- listToMaybe :: QA a => Q [a] -> Q (Maybe a)
- maybeToList :: QA a => Q (Maybe a) -> Q [a]
- nothing :: QA a => Q (Maybe a)
- just :: QA a => Q a -> Q (Maybe a)
- isNothing :: QA a => Q (Maybe a) -> Q Bool
- isJust :: QA a => Q (Maybe a) -> Q Bool
- fromJust :: QA a => Q (Maybe a) -> Q a
- maybe :: (QA a, QA b) => Q b -> (Q a -> Q b) -> Q (Maybe a) -> Q b
- fromMaybe :: QA a => Q a -> Q (Maybe a) -> Q a
- catMaybes :: QA a => Q [Maybe a] -> Q [a]
- mapMaybe :: (QA a, QA b) => (Q a -> Q (Maybe b)) -> Q [a] -> Q [b]
- left :: (QA a, QA b) => Q a -> Q (Either a b)
- right :: (QA a, QA b) => Q b -> Q (Either a b)
- isLeft :: (QA a, QA b) => Q (Either a b) -> Q Bool
- isRight :: (QA a, QA b) => Q (Either a b) -> Q Bool
- either :: (QA a, QA b, QA c) => (Q a -> Q c) -> (Q b -> Q c) -> Q (Either a b) -> Q c
- lefts :: (QA a, QA b) => Q [Either a b] -> Q [a]
- rights :: (QA a, QA b) => Q [Either a b] -> Q [b]
- partitionEithers :: (QA a, QA b) => Q [Either a b] -> Q ([a], [b])
- nil :: forall a. QA a => Q [a]
- empty :: QA a => Q [a]
- cons :: forall a. QA a => Q a -> Q [a] -> Q [a]
- (<|) :: QA a => Q a -> Q [a] -> Q [a]
- snoc :: forall a. QA a => Q [a] -> Q a -> Q [a]
- (|>) :: QA a => Q [a] -> Q a -> Q [a]
- singleton :: QA a => Q a -> Q [a]
- head :: forall a. QA a => Q [a] -> Q a
- tail :: forall a. QA a => Q [a] -> Q [a]
- take :: forall a. QA a => Q Integer -> Q [a] -> Q [a]
- drop :: forall a. QA a => Q Integer -> Q [a] -> Q [a]
- map :: forall a b. (QA a, QA b) => (Q a -> Q b) -> Q [a] -> Q [b]
- append :: forall a. QA a => Q [a] -> Q [a] -> Q [a]
- (><) :: QA a => Q [a] -> Q [a] -> Q [a]
- filter :: forall a. QA a => (Q a -> Q Bool) -> Q [a] -> Q [a]
- groupWith :: forall a b. (Ord b, QA a, QA b) => (Q a -> Q b) -> Q [a] -> Q [[a]]
- sortWith :: forall a b. (Ord b, QA a, QA b) => (Q a -> Q b) -> Q [a] -> Q [a]
- the :: forall a. (Eq a, QA a) => Q [a] -> Q a
- last :: forall a. QA a => Q [a] -> Q a
- init :: forall a. QA a => Q [a] -> Q [a]
- null :: QA a => Q [a] -> Q Bool
- length :: QA a => Q [a] -> Q Integer
- index :: forall a. QA a => Q [a] -> Q Integer -> Q a
- (!!) :: QA a => Q [a] -> Q Integer -> Q a
- reverse :: forall a. QA a => Q [a] -> Q [a]
- and :: Q [Bool] -> Q Bool
- or :: Q [Bool] -> Q Bool
- any :: QA a => (Q a -> Q Bool) -> Q [a] -> Q Bool
- all :: QA a => (Q a -> Q Bool) -> Q [a] -> Q Bool
- sum :: forall a. (QA a, Num a) => Q [a] -> Q a
- concat :: forall a. QA a => Q [[a]] -> Q [a]
- concatMap :: (QA a, QA b) => (Q a -> Q [b]) -> Q [a] -> Q [b]
- maximum :: forall a. (QA a, Ord a) => Q [a] -> Q a
- minimum :: forall a. (QA a, Ord a) => Q [a] -> Q a
- splitAt :: forall a. QA a => Q Integer -> Q [a] -> Q ([a], [a])
- takeWhile :: forall a. QA a => (Q a -> Q Bool) -> Q [a] -> Q [a]
- dropWhile :: forall a. QA a => (Q a -> Q Bool) -> Q [a] -> Q [a]
- span :: forall a. QA a => (Q a -> Q Bool) -> Q [a] -> Q ([a], [a])
- break :: forall a. QA a => (Q a -> Q Bool) -> Q [a] -> Q ([a], [a])
- elem :: forall a. (Eq a, QA a) => Q a -> Q [a] -> Q Bool
- notElem :: forall a. (Eq a, QA a) => Q a -> Q [a] -> Q Bool
- lookup :: (QA a, QA b, Eq a) => Q a -> Q [(a, b)] -> Q (Maybe b)
- zip :: forall a b. (QA a, QA b) => Q [a] -> Q [b] -> Q [(a, b)]
- zipWith :: forall a b c. (QA a, QA b, QA c) => (Q a -> Q b -> Q c) -> Q [a] -> Q [b] -> Q [c]
- unzip :: forall a b. (QA a, QA b) => Q [(a, b)] -> Q ([a], [b])
- nub :: forall a. (Eq a, QA a) => Q [a] -> Q [a]
- fst :: forall a b. (QA a, QA b) => Q (a, b) -> Q a
- snd :: forall a b. (QA a, QA b) => Q (a, b) -> Q b
- integerToDouble :: Q Integer -> Q Double
- toQ :: forall a. QA a => a -> Q a
- return :: QA a => Q a -> Q [a]
- (>>=) :: (QA a, QA b) => Q [a] -> (Q a -> Q [b]) -> Q [b]
- (>>) :: (QA a, QA b) => Q [a] -> Q [b] -> Q [b]
- mzip :: (QA a, QA b) => Q [a] -> Q [b] -> Q [(a, b)]
- guard :: Q Bool -> Q [()]
- data Q a
- class QA a
- class QA a => TA a
- table :: TA a => String -> Q [a]
- tableDB :: TA a => String -> Q [a]
- tableCSV :: TA a => String -> Q [a]
- tableWithKeys :: TA a => String -> [[String]] -> Q [a]
- class BasicType a
- class View a b | a -> b, b -> a where
- tuple :: View a b => b -> a
- record :: View a b => b -> a
- generateDatabaseRecordInstances :: IConnection conn => IO conn -> Q [Dec]
- generateTableRecordInstances :: IConnection conn => IO conn -> String -> String -> [Name] -> Q [Dec]
- generateRecordInstances :: Q [Dec] -> Q [Dec]
- generateTableDeclarations :: IConnection conn => IO conn -> Q [Dec]
- csvImport :: FilePath -> Type -> IO Norm
- csvExport :: QA a => FilePath -> [a] -> IO ()
- csvExportHandle :: QA a => Handle -> [a] -> IO ()
- csvExportStdout :: QA a => [a] -> IO ()
- jsonExport :: QA a => FilePath -> [a] -> IO ()
- jsonExportHandle :: QA a => Handle -> [a] -> IO ()
- jsonExportStdout :: QA a => [a] -> IO ()
- xhtmlExport :: QA a => FilePath -> [a] -> IO ()
- xhtmlExportHandle :: QA a => Handle -> [a] -> IO ()
- xhtmlExportStdout :: QA a => [a] -> IO ()
- module Data.String
- module Data.Text
- module Database.HDBC
- module Prelude
Unit
Boolean logic
Equality and Ordering
Conditionals
bool :: QA a => Q a -> Q a -> Q Bool -> Q aSource
Boolean fold | It's first argument is used in the case of False | It's second argument is used in the case of True | The third argument is the boolean
Maybe
Either
List Construction
List Operations
Special folds
Sublists
Searching Lists
Zipping and Unzipping Lists
Set operations
Tuple Projection Functions
Conversions between numeric types
Convert Haskell values into DB queries
Rebind Monadic Combinators
Missing Combinators
This module offers most of the functions on lists given in PreludeList for the
Q
type. Missing functions are:
General folds:
foldl foldl1 scanl scanl1 foldr foldr1 scanr scanr1
Infinit lists:
iterate repeat cycle
String functions:
lines words unlines unwords
Zipping and unzipping lists:
zip3 zipWith3 unzip3
Data Types
Typeable1 Q | |
Eq (Q Double) | |
Eq (Q Integer) | |
Fractional (Q Double) | |
Data a => Data (Q a) | |
Num (Q Double) | |
Num (Q Integer) | |
Show (Q a) | |
IsString (Q Text) | |
View (Q Bool) (Q Bool) | |
View (Q Char) (Q Char) | |
View (Q Double) (Q Double) | |
View (Q Integer) (Q Integer) | |
View (Q ()) (Q ()) | |
View (Q Text) (Q Text) | |
(QA a, QA b) => View (Q (a, b)) (Q a, Q b) | |
(QA a1, QA a2, QA a3) => View (Q (a1, a2, a3)) (Q a1, Q a2, Q a3) | |
(QA a1, QA a2, QA a3, QA a4) => View (Q (a1, a2, a3, a4)) (Q a1, Q a2, Q a3, Q a4) | |
(QA a1, QA a2, QA a3, QA a4, QA a5) => View (Q (a1, a2, a3, a4, a5)) (Q a1, Q a2, Q a3, Q a4, Q a5) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6) => View (Q (a1, a2, a3, a4, a5, a6)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7) => View (Q (a1, a2, a3, a4, a5, a6, a7)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13, Q a14) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14, QA a15) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13, Q a14, Q a15) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14, QA a15, QA a16) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13, Q a14, Q a15, Q a16) |
Type Classes
QA Bool | |
QA Char | |
QA Double | |
QA Integer | |
QA () | |
QA Text | |
QA a => QA [a] | |
QA a => QA (Maybe a) | |
(QA a, QA b) => QA (Either a b) | |
(QA a, QA b) => QA (a, b) | |
(QA a1, QA a2, QA a3) => QA (a1, a2, a3) | |
(QA a1, QA a2, QA a3, QA a4) => QA (a1, a2, a3, a4) | |
(QA a1, QA a2, QA a3, QA a4, QA a5) => QA (a1, a2, a3, a4, a5) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6) => QA (a1, a2, a3, a4, a5, a6) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7) => QA (a1, a2, a3, a4, a5, a6, a7) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8) => QA (a1, a2, a3, a4, a5, a6, a7, a8) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14, QA a15) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14, QA a15, QA a16) => QA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) |
TA Bool | |
TA Char | |
TA Double | |
TA Integer | |
TA () | |
TA Text | |
(BasicType a, BasicType b, QA a, QA b) => TA (a, b) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3) => TA (a1, a2, a3) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4) => TA (a1, a2, a3, a4) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5) => TA (a1, a2, a3, a4, a5) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6) => TA (a1, a2, a3, a4, a5, a6) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7) => TA (a1, a2, a3, a4, a5, a6, a7) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8) => TA (a1, a2, a3, a4, a5, a6, a7, a8) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9, QA a10, BasicType a10) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9, QA a10, BasicType a10, QA a11, BasicType a11) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9, QA a10, BasicType a10, QA a11, BasicType a11, QA a12, BasicType a12) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9, QA a10, BasicType a10, QA a11, BasicType a11, QA a12, BasicType a12, QA a13, BasicType a13) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9, QA a10, BasicType a10, QA a11, BasicType a11, QA a12, BasicType a12, QA a13, BasicType a13, QA a14, BasicType a14) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9, QA a10, BasicType a10, QA a11, BasicType a11, QA a12, BasicType a12, QA a13, BasicType a13, QA a14, BasicType a14, QA a15, BasicType a15) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) | |
(QA a1, BasicType a1, QA a2, BasicType a2, QA a3, BasicType a3, QA a4, BasicType a4, QA a5, BasicType a5, QA a6, BasicType a6, QA a7, BasicType a7, QA a8, BasicType a8, QA a9, BasicType a9, QA a10, BasicType a10, QA a11, BasicType a11, QA a12, BasicType a12, QA a13, BasicType a13, QA a14, BasicType a14, QA a15, BasicType a15, QA a16, BasicType a16) => TA (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) |
class View a b | a -> b, b -> a whereSource
View (Q Bool) (Q Bool) | |
View (Q Char) (Q Char) | |
View (Q Double) (Q Double) | |
View (Q Integer) (Q Integer) | |
View (Q ()) (Q ()) | |
View (Q Text) (Q Text) | |
(QA a, QA b) => View (Q (a, b)) (Q a, Q b) | |
(QA a1, QA a2, QA a3) => View (Q (a1, a2, a3)) (Q a1, Q a2, Q a3) | |
(QA a1, QA a2, QA a3, QA a4) => View (Q (a1, a2, a3, a4)) (Q a1, Q a2, Q a3, Q a4) | |
(QA a1, QA a2, QA a3, QA a4, QA a5) => View (Q (a1, a2, a3, a4, a5)) (Q a1, Q a2, Q a3, Q a4, Q a5) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6) => View (Q (a1, a2, a3, a4, a5, a6)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7) => View (Q (a1, a2, a3, a4, a5, a6, a7)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13, Q a14) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14, QA a15) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13, Q a14, Q a15) | |
(QA a1, QA a2, QA a3, QA a4, QA a5, QA a6, QA a7, QA a8, QA a9, QA a10, QA a11, QA a12, QA a13, QA a14, QA a15, QA a16) => View (Q (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16)) (Q a1, Q a2, Q a3, Q a4, Q a5, Q a6, Q a7, Q a8, Q a9, Q a10, Q a11, Q a12, Q a13, Q a14, Q a15, Q a16) |
Template Haskell: Creating Table Representations
generateDatabaseRecordInstancesSource
:: IConnection conn | |
=> IO conn | Database connection |
-> Q [Dec] |
Create corresponding Haskell record data types and generate QA and View instances for all tables in the database (except for system tables).
Example usage:
$(generateDatabaseRecordInstances myConnection)
Note that the database information is queried at compile time, not at run time!
generateTableRecordInstancesSource
:: IConnection conn | |
=> IO conn | Database connection |
-> String | Table name |
-> String | Data type name for each row of the table |
-> [Name] | Default deriving instances |
-> Q [Dec] |
Lookup a database table, create corresponding Haskell record data types and generate QA and View instances
Example usage:
$(generateTableRecordInstances myConnection "users" "User" [''Show,''Eq])
Note that the table information is queried at compile time, not at run time!
generateRecordInstances :: Q [Dec] -> Q [Dec]Source
Derive QA and View instances for record definitions
Example usage:
$(generateRecordInstances [d| data User = User { userId :: Int , userName :: String } |])
This generates the following record type, which can be used in view patterns
data UserV = UserV { userIdV :: Q Int , userNameV :: Q String }
instance View (Q User) UserV
and the liftet record selectors:
userIdQ :: Q User -> Q Int userNameQ :: Q User -> Q String
generateTableDeclarationsSource
:: IConnection conn | |
=> IO conn | Database connection |
-> Q [Dec] |
Generate table declarations for all tables in the database. This function
should be used in conjunction with generateDatabaseRecordInstances. For
example, this function generates the following code for the table users
:
users :: Q [User] users = table "users"
csvExportStdout :: QA a => [a] -> IO ()Source
jsonExportStdout :: QA a => [a] -> IO ()Source
xhtmlExportStdout :: QA a => [a] -> IO ()Source
module Data.String
module Data.Text
module Database.HDBC
module Prelude