module Opaleye.Internal.Locking where
import qualified Opaleye.Internal.QueryArr as Q
import qualified Opaleye.Internal.PrimQuery as PQ
forUpdate :: Q.Select a -> Q.Select a
forUpdate :: Select a -> Select a
forUpdate Select a
s = (() -> State Tag (a, PrimQuery)) -> Select a
forall a b. (a -> State Tag (b, PrimQuery)) -> QueryArr a b
Q.productQueryArr' ((() -> State Tag (a, PrimQuery)) -> Select a)
-> (() -> State Tag (a, PrimQuery)) -> Select a
forall a b. (a -> b) -> a -> b
$ \() -> do
(a
a, PrimQuery
query) <- Select a -> () -> State Tag (a, PrimQuery)
forall a b. QueryArr a b -> a -> State Tag (b, PrimQuery)
Q.runSimpleQueryArr' Select a
s ()
(a, PrimQuery) -> State Tag (a, PrimQuery)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (a
a, PrimQuery -> PrimQuery
forall a. PrimQuery' a -> PrimQuery' a
PQ.ForUpdate PrimQuery
query)