packages feed

hasql-1.10.3.5: src/library-tests/Helpers/Statements/CurrentSetting.hs

module Helpers.Statements.CurrentSetting where

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 CurrentSetting = CurrentSetting
  { name :: Text,
    missingOk :: Bool
  }

type CurrentSettingResult = Maybe Text

instance StatementModule CurrentSetting CurrentSettingResult where
  statement =
    Statement.preparable sql encoder decoder
    where
      sql =
        "SELECT current_setting($1, $2)"

      encoder =
        mconcat
          [ name >$< Encoders.param (Encoders.nonNullable Encoders.text),
            missingOk >$< Encoders.param (Encoders.nonNullable Encoders.bool)
          ]

      decoder =
        Decoders.singleRow
          (Decoders.column (Decoders.nullable Decoders.text))