packages feed

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

module Helpers.Statements.SetConfig 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 hiding (local)

data SetConfig = SetConfig
  { name :: Text,
    value :: Text,
    local :: Bool
  }

type SetConfigResult = ()

instance StatementModule SetConfig SetConfigResult where
  statement =
    Statement.preparable sql encoder decoder
    where
      sql =
        "SELECT set_config($1, $2, $3)"

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

      decoder =
        Decoders.noResult