opaleye-0.3.1: An SQL-generating DSL targeting PostgreSQL

Safe HaskellNone
LanguageHaskell98

Opaleye.RunQuery

Synopsis

Documentation

runQuery :: Default QueryRunner columns haskells => Connection -> Query columns -> IO [haskells] Source

runQuery's use of the Default typeclass means that the compiler will have trouble inferring types. It is strongly recommended that you provide full type signatures when using runQuery.

Example type specialization:

runQuery :: Query (Column PGInt4, Column PGText) -> IO [(Column Int, Column String)]

Assuming the makeAdaptorAndInstance splice has been run for the product type Foo:

runQuery :: Query (Foo (Column PGInt4) (Column PGText) (Column PGBool)
         -> IO [(Foo (Column Int) (Column String) (Column Bool)]

Opaleye types are converted to Haskell types based on instances of the QueryRunnerColumnDefault typeclass.

runQueryExplicit :: QueryRunner columns haskells -> Connection -> Query columns -> IO [haskells] Source

queryRunnerColumn :: (Column a' -> Column a) -> (b -> b') -> QueryRunnerColumn a b -> QueryRunnerColumn a' b' Source

Use queryRunnerColumn to make an instance to allow you to run queries on your own datatypes. For example:

newtype Foo = Foo Int
instance Default QueryRunnerColumn Foo Foo where
   def = queryRunnerColumn (unsafeCoerce :: Column Foo -> Column PGInt4) Foo def

data QueryRunnerColumn coltype haskell Source