ihp-typed-sql-1.7.0: Compile-time typed SQL quasiquoter for IHP
Safe HaskellNone
LanguageGHC2021

IHP.TypedSql.Types

Synopsis

Documentation

data QueryCardinality Source #

What the SQL parser can prove about how many rows a query returns.

data QueryExecResult Source #

What kind of result an SQL statement has.

This marker is separate from QueryCardinality because statements without result columns can still have different execution results: DML statements report affected rows, while utility statements such as SET CONSTRAINTS do not report a row count.

data TypedQuery (cardinality :: QueryCardinality) (execResult :: QueryExecResult) result Source #

Prepared query with a custom row parser. High-level: this is the runtime value produced by the typed SQL quasiquoter.

Constructors

TypedQuery 

Fields

type family TypedQueryResult (cardinality :: QueryCardinality) result where ... Source #

The result shape returned by sqlQueryTyped.

Equations

TypedQueryResult 'ManyRows result = [result] 
TypedQueryResult 'AtMostOneRow result = Maybe result 
TypedQueryResult 'ExactlyOneRow result = result 

type family SqlExecTypedResult (execResult :: QueryExecResult) where ... Source #

The result returned by sqlExecTyped.

Equations

SqlExecTypedResult 'ReturnsAffectedRows = Int64 
SqlExecTypedResult 'ReturnsNoResult = () 
SqlExecTypedResult 'ReturnsRows = TypeError ('Text "sqlExecTyped cannot run SQL statements that return rows. Use sqlQueryTyped instead.") :: Type