packages feed

hasql-1.10: src/library-tests/Helpers/Statements/GenerateSeries.hs

module Helpers.Statements.GenerateSeries where

import Data.Int
import Hasql.Decoders qualified as Decoders
import Hasql.Encoders qualified as Encoders
import Hasql.Statement qualified as Statement
import Helpers.Dsls.Statement
import Prelude

data GenerateSeries = GenerateSeries
  { start :: Int64,
    end :: Int64
  }

type GenerateSeriesResult = [Int64]

instance StatementModule GenerateSeries GenerateSeriesResult where
  statement =
    Statement.preparable
      "SELECT generate_series($1, $2)"
      ( (contramap start (Encoders.param (Encoders.nonNullable Encoders.int8)))
          <> (contramap end (Encoders.param (Encoders.nonNullable Encoders.int8)))
      )
      ( Decoders.rowList
          (Decoders.column (Decoders.nonNullable Decoders.int8))
      )