{-# language FlexibleContexts #-}
{-# language MonoLocalBinds #-}
module Rel8.Query.SQL
( showQuery
)
where
import Prelude
import qualified Opaleye.Internal.Tag as Opaleye
import Rel8.Expr ( Expr )
import Rel8.Query ( Query )
import Rel8.Statement.Select ( ppSelect )
import Rel8.Table ( Table )
import Control.Monad.Trans.State.Strict (evalState)
showQuery :: Table Expr a => Query a -> String
showQuery :: forall a. Table Expr a => Query a -> String
showQuery = Doc -> String
forall a. Show a => a -> String
show (Doc -> String) -> (Query a -> Doc) -> Query a -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (State Tag Doc -> Tag -> Doc
forall s a. State s a -> s -> a
`evalState` Tag
Opaleye.start) (State Tag Doc -> Doc)
-> (Query a -> State Tag Doc) -> Query a -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Query a -> State Tag Doc
forall a. Table Expr a => Query a -> State Tag Doc
ppSelect