opaleye- An SQL-generating DSL targeting PostgreSQL

Safe HaskellNone




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

prepareQuery :: QueryRunner columns haskells -> Query columns -> (Query, RowParser 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 pgType haskellType Source

A QueryRunnerColumn pgType haskellType encodes how to turn a value of Postgres type pgType into a value of Haskell type haskellType. For example a value of type QueryRunnerColumn PGText String encodes how to turn a PGText result from the database into a Haskell String.