Safe Haskell | None |
---|---|
Language | Haskell2010 |
Effectful.Opaleye
Synopsis
- data Opaleye (a :: Type -> Type) b where
- RunSelectExplicit :: forall fields haskells (a :: Type -> Type). FromFields fields haskells -> Select fields -> Opaleye a [haskells]
- RunSelectFoldExplicit :: forall fields haskells b (a :: Type -> Type). FromFields fields haskells -> Select fields -> b -> (b -> haskells -> a b) -> Opaleye a b
- RunInsert :: forall b (a :: Type -> Type). Insert b -> Opaleye a b
- RunDelete :: forall b (a :: Type -> Type). Delete b -> Opaleye a b
- RunUpdate :: forall b (a :: Type -> Type). Update b -> Opaleye a b
- runSelect :: forall (es :: [Effect]) fields haskells. (HasCallStack, Opaleye :> es, Default FromFields fields haskells) => Select fields -> Eff es [haskells]
- runSelectI :: forall (es :: [Effect]) fields haskells. (HasCallStack, Opaleye :> es, Default (Inferrable FromFields) fields haskells) => Select fields -> Eff es [haskells]
- runSelectExplicit :: forall fields haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => FromFields fields haskells -> Select fields -> Eff es [haskells]
- runSelectFold :: forall (es :: [Effect]) fields haskells b. (HasCallStack, Opaleye :> es, Default FromFields fields haskells) => Select fields -> b -> (b -> haskells -> Eff es b) -> Eff es b
- runSelectFoldExplicit :: forall fields haskells b (es :: [Effect]). (HasCallStack, Opaleye :> es) => FromFields fields haskells -> Select fields -> b -> (b -> haskells -> Eff es b) -> Eff es b
- runInsert :: forall haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => Insert haskells -> Eff es haskells
- runDelete :: forall haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => Delete haskells -> Eff es haskells
- runUpdate :: forall haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => Update haskells -> Eff es haskells
- runOpaleyeWithConnection :: forall (es :: [Effect]) a. (HasCallStack, WithConnection :> es, IOE :> es) => Eff (Opaleye ': es) a -> Eff es a
- runOpaleyeWithConnectionCounting :: forall a (es :: [Effect]). (HasCallStack, State SQLOperationCounts :> es, WithConnection :> es, IOE :> es) => Eff (Opaleye ': es) a -> Eff es a
- runOpaleyeConnection :: forall (es :: [Effect]) a. (HasCallStack, IOE :> es) => Connection -> Eff (Opaleye ': es) a -> Eff es a
- runOpaleyeConnectionCounting :: forall (es :: [Effect]) a. (HasCallStack, State SQLOperationCounts :> es, IOE :> es) => Connection -> Eff (Opaleye ': es) a -> Eff es a
- data SQLOperationCounts = SQLOperationCounts {}
- withCounts :: forall (es :: [Effect]) a. State SQLOperationCounts :> es => Eff es a -> Eff es (SQLOperationCounts, a)
- printCounts :: MonadIO m => SQLOperationCounts -> m ()
Effect
data Opaleye (a :: Type -> Type) b where Source #
A dynamic effect to perform opaleye
operations.
Constructors
RunSelectExplicit :: forall fields haskells (a :: Type -> Type). FromFields fields haskells -> Select fields -> Opaleye a [haskells] | Lifted |
RunSelectFoldExplicit :: forall fields haskells b (a :: Type -> Type). FromFields fields haskells -> Select fields -> b -> (b -> haskells -> a b) -> Opaleye a b | Lifted |
RunInsert :: forall b (a :: Type -> Type). Insert b -> Opaleye a b | Lifted |
RunDelete :: forall b (a :: Type -> Type). Delete b -> Opaleye a b | Lifted |
RunUpdate :: forall b (a :: Type -> Type). Update b -> Opaleye a b | Lifted |
Instances
type DispatchOf Opaleye Source # | |
Defined in Effectful.Opaleye.Effect |
Effectful functions
Select
runSelect :: forall (es :: [Effect]) fields haskells. (HasCallStack, Opaleye :> es, Default FromFields fields haskells) => Select fields -> Eff es [haskells] Source #
Lifted runSelect
.
runSelectI :: forall (es :: [Effect]) fields haskells. (HasCallStack, Opaleye :> es, Default (Inferrable FromFields) fields haskells) => Select fields -> Eff es [haskells] Source #
Lifted runSelectI
.
runSelectExplicit :: forall fields haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => FromFields fields haskells -> Select fields -> Eff es [haskells] Source #
Lifted RunSelectExplicit
.
Select-fold
runSelectFold :: forall (es :: [Effect]) fields haskells b. (HasCallStack, Opaleye :> es, Default FromFields fields haskells) => Select fields -> b -> (b -> haskells -> Eff es b) -> Eff es b Source #
Lifted runSelectFold
.
runSelectFoldExplicit :: forall fields haskells b (es :: [Effect]). (HasCallStack, Opaleye :> es) => FromFields fields haskells -> Select fields -> b -> (b -> haskells -> Eff es b) -> Eff es b Source #
Lifted RunSelectFoldExplicit
.
Insert
runInsert :: forall haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => Insert haskells -> Eff es haskells Source #
Lifted RunInsert
.
Delete
runDelete :: forall haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => Delete haskells -> Eff es haskells Source #
Lifted RunDelete
.
Update
runUpdate :: forall haskells (es :: [Effect]). (HasCallStack, Opaleye :> es) => Update haskells -> Eff es haskells Source #
Lifted RunUpdate
.
Interpreters
runOpaleyeWithConnection :: forall (es :: [Effect]) a. (HasCallStack, WithConnection :> es, IOE :> es) => Eff (Opaleye ': es) a -> Eff es a Source #
Interpret the Opaleye
effect using WithConnection
from
effectful-postgresql.
If you don't want to use WithConnection
, see runOpaleyeConnection
.
runOpaleyeWithConnectionCounting :: forall a (es :: [Effect]). (HasCallStack, State SQLOperationCounts :> es, WithConnection :> es, IOE :> es) => Eff (Opaleye ': es) a -> Eff es a Source #
Same as runOpaleyeWithConnection
, but we track the number of SQL operations that
we perform.
runOpaleyeConnection :: forall (es :: [Effect]) a. (HasCallStack, IOE :> es) => Connection -> Eff (Opaleye ': es) a -> Eff es a Source #
Interpret the Opaleye
effect by simply supplying a Connection
runOpaleyeConnectionCounting :: forall (es :: [Effect]) a. (HasCallStack, State SQLOperationCounts :> es, IOE :> es) => Connection -> Eff (Opaleye ': es) a -> Eff es a Source #
Same as runOpaleyeConnection
, but we track the number of SQL operations that
we perform.
Counting SQL operations
data SQLOperationCounts Source #
This tracks the number of SQL operations that have been performed in the
Opaleye
effect, along with which table it was performed on (where possible).
INSERT
, DELETE
and UPDATE
operations act on one table only, so we can tally the number
of each that are performed on each table (indexed by a QualifiedIdentifier
).
SELECT
operations can act on multiple tables, so we just track the total number of selects.
If required, SQLOperationCounts
can be constructed using Monoid
and combined using Semigroup
.
We use non-negative Natural
s as a tally since a negative number of operations makes no sense.
Constructors
SQLOperationCounts | |
Instances
withCounts :: forall (es :: [Effect]) a. State SQLOperationCounts :> es => Eff es a -> Eff es (SQLOperationCounts, a) Source #
This allows us to count the number of SQL operations over the course of a sub-operation.
printCounts :: MonadIO m => SQLOperationCounts -> m () Source #
Print an SQLOperationCounts
to stdout using prettyCounts
.
For less verbose output, see printCountsBrief
.