@@ -15,10 +15,9 @@ import Control.Monad.IO.Class (MonadIO)
1515import Data.Kind (Type )
1616import qualified Data.Map.Strict as Map
1717import Data.Text (Text , pack )
18- import Database.Bolt (BoltActionT ,
19- IsValue (.. ),
20- Record , Value ,
21- queryP )
18+ import Database.Bolt (BoltActionT , IsValue (.. ), Record ,
19+ Value , queryP )
20+ import GHC.Stack (HasCallStack , withFrozenCallStack )
2221import GHC.TypeLits (Symbol )
2322
2423import Database.Bolt.Extras.DSL.Internal.Executer (formQuery )
@@ -53,7 +52,7 @@ newtype CypherDSLParams (params :: [(Symbol, Type)]) (a :: Type)
5352-- This should be considered an implementation detail.
5453class QueryWithParams (params :: [(Symbol , Type )]) (m :: Type -> Type ) fun | params m -> fun where
5554 -- | Internal function that accumulates parameters from type-level list.
56- collectParams :: CypherDSL () -> [(Text , Value )] -> fun
55+ collectParams :: HasCallStack => CypherDSL () -> [(Text , Value )] -> fun
5756
5857-- | Base case: if there are no parameters, perform query with 'queryP'.
5958instance MonadIO m => QueryWithParams '[] m (BoltActionT m [Record ]) where
@@ -95,6 +94,7 @@ queryWithParams
9594 :: forall params m fun
9695 . MonadIO m
9796 => QueryWithParams params m fun
97+ => HasCallStack
9898 => CypherDSLParams params ()
9999 -> fun
100100queryWithParams (CypherDSLParams dsl) = collectParams @ params @ m dsl []
0 commit comments