sqlc-hs-0.1.0.0: templates/query.hs.jinja
{- This file was auto-generated from {{sourceFile}} by sqlc-hs. -}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
module {{moduleName}} where
import {{ internalModuleName }} (Query(..), Params, Result)
{% if generatePostgresql %}
import qualified Database.PostgreSQL.Simple.FromRow
import qualified Database.PostgreSQL.Simple.ToField
import qualified Database.PostgreSQL.Simple.ToRow
{% endif %}
{% if generateSqlite %}
import qualified Database.SQLite.Simple.FromRow
import qualified Database.SQLite.Simple.ToField
import qualified Database.SQLite.Simple.ToRow
{% endif %}
{% if generateMysql %}
import qualified Database.MySQL.Simple.Param
import qualified Database.MySQL.Simple.QueryParams
import qualified Database.MySQL.Simple.QueryResults
import qualified Database.MySQL.Simple.Result
{% endif %}
{% for import in moduleImports %}
import qualified {{ import.value }}
{% endfor %}
{{ haskellQueryName }} :: Query {{ escapedQueryName }} {{ escapedCommand }}
{{ haskellQueryName }} = Query {{ escapedSql }}
data instance Params {{ escapedQueryName }} = {{ haskellParamsName }}
{
{% for param in parameterColumns %}
{{ param.value.name }} :: {{ param.value.type }}{% if !param.last %},{% endif %}
{% endfor %}
}
data instance Result {{ escapedQueryName }} = {{ haskellResultName }}
{
{% for column in resultColumns %}
{{ column.value.name }} :: !{{ column.value.type }}{% if !column.last %},{% endif %}
{% endfor %}
}
{% if generatePostgresql %}
instance Database.PostgreSQL.Simple.ToRow.ToRow (Params {{ escapedQueryName }}) where
toRow {{ haskellParamsName }}{% if parameterColumns | empty %}{}{% else %}{..}{% endif%} =
[ {% for param in parameterColumns %}
Database.PostgreSQL.Simple.ToField.toField {{ param.value.name }}{% if !param.last %}, {% endif %}
{% endfor %}
]
instance Database.PostgreSQL.Simple.FromRow.FromRow (Result {{ escapedQueryName }}) where
fromRow =
{{ haskellResultName }}
{% for column in resultColumns %}
{% if column.first %}<$>{% else %}<*>{% endif%} Database.PostgreSQL.Simple.FromRow.field
{% endfor %}
{% endif %}
{% if generateSqlite %}
instance Database.SQLite.Simple.ToRow.ToRow (Params {{ escapedQueryName }}) where
toRow {{ haskellParamsName }}{% if parameterColumns | empty %}{}{% else %}{..}{% endif%} =
[ {% for param in parameterColumns %}
Database.SQLite.Simple.ToField.toField {{ param.value.name }}{% if !param.last %}, {% endif %}
{% endfor %}
]
instance Database.SQLite.Simple.FromRow.FromRow (Result {{ escapedQueryName }}) where
fromRow =
{{ haskellResultName }}
{% for column in resultColumns %}
{% if column.first %}<$>{% else %}<*>{% endif%} Database.SQLite.Simple.FromRow.field
{% endfor %}
{% endif %}
{% if generateMysql %}
instance Database.MySQL.Simple.QueryParams.QueryParams (Params {{ escapedQueryName }}) where
renderParams {{ haskellParamsName }}{% if parameterColumns | empty %}{}{% else %}{..}{% endif%} =
[ {% for param in parameterColumns %}
Database.MySQL.Simple.Param.render {{ param.value.name }}{% if !param.last %}, {% endif %}
{% endfor %}
]
instance Database.MySQL.Simple.QueryResults.QueryResults (Result {{ escapedQueryName }}) where
convertResults [{% for column in resultColumns %}a_{{ column.index }}{% if !column.last %}, {% endif %}{% endfor%}] [{% for column in resultColumns %}b_{{ column.index }}{% if !column.last %}, {% endif %}{% endfor%}] = {{ haskellResultName }}{% if resultColumns | empty %}{}{% else %}{..}{% endif%}
{% if resultColumns %}
where
{% for column in resultColumns %}
!{{ column.value.name }} = Database.MySQL.Simple.Result.convert a_{{ column.index }} b_{{ column.index }}
{% endfor %}
{% endif %}
convertResults a b =
Database.MySQL.Simple.QueryResults.convertError a b {{ resultColumns | length }}
{% endif %}