packages feed

hasql-1.10: src/library-tests/Helpers/Dsls/Execution.hs

module Helpers.Dsls.Execution
  ( Session,
    sessionByParams,
    Pipeline,
    pipelineByParams,
    generateVarname,
  )
where

import Hasql.Pipeline (Pipeline)
import Hasql.Pipeline qualified as Pipeline
import Hasql.Session (Session)
import Hasql.Session qualified as Session
import Helpers.Dsls.Statement qualified as StatementDsl
import System.Random.Stateful qualified as Random
import TextBuilder qualified
import Prelude

sessionByParams ::
  (StatementDsl.StatementModule params result) =>
  params -> Session result
sessionByParams = Session.pipeline . pipelineByParams

pipelineByParams ::
  (StatementDsl.StatementModule params result) =>
  params -> Pipeline result
pipelineByParams params = Pipeline.statement params StatementDsl.statement

generateVarname :: IO Text
generateVarname = do
  uniqueNum1 <- Random.uniformWord64 Random.globalStdGen
  uniqueNum2 <- Random.uniformWord64 Random.globalStdGen
  pure
    $ TextBuilder.toText
    $ mconcat
    $ [ "testing.v",
        TextBuilder.decimal uniqueNum1,
        "v",
        TextBuilder.decimal uniqueNum2
      ]