packages feed

hasql-1: tasty/Main/Queries.hs

module Main.Queries where

import Main.Prelude hiding (def)
import qualified Hasql.Query as HQ
import qualified Hasql.Encoders as HE
import qualified Hasql.Decoders as HD
import qualified Main.Prelude as Prelude


def :: ByteString -> HQ.Query () ()
def sql =
  HQ.statement sql Prelude.def Prelude.def False

plain :: ByteString -> HQ.Query () ()
plain sql =
  HQ.statement sql mempty HD.unit False

dropType :: ByteString -> HQ.Query () ()
dropType name =
  plain $
    "drop type if exists " <> name

createEnum :: ByteString -> [ByteString] -> HQ.Query () ()
createEnum name values =
  plain $
    "create type " <> name <> " as enum (" <> 
    mconcat (intersperse ", " (map (\x -> "'" <> x <> "'") values)) <> ")"

selectList :: HQ.Query () ([] (Int64, Int64))
selectList =
  HQ.statement sql mempty decoder True
  where
    sql =
      "values (1,2), (3,4), (5,6)"
    decoder =
      HD.rowsList ((,) <$> HD.value HD.int8 <*> HD.value HD.int8)