packages feed

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 %}