{-# LANGUAGE TemplateHaskell #-}
module Effectful.Opaleye.Effect
(
Opaleye (..)
, runSelectExplicit
, runSelectFoldExplicit
, runInsert
, runDelete
, runUpdate
)
where
import Effectful
import Effectful.TH
import qualified Opaleye as O
data Opaleye :: Effect where
RunSelectExplicit :: O.FromFields fields haskells -> O.Select fields -> Opaleye m [haskells]
RunSelectFoldExplicit ::
O.FromFields fields haskells ->
O.Select fields ->
b ->
(b -> haskells -> m b) ->
Opaleye m b
RunInsert :: O.Insert haskells -> Opaleye m haskells
RunDelete :: O.Delete haskells -> Opaleye m haskells
RunUpdate :: O.Update haskells -> Opaleye m haskells
makeEffect ''Opaleye