packages feed

hasbolt-extras 0.0.1.1 → 0.0.1.2

raw patch · 5 files changed

+20/−5 lines, 5 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Database.Bolt.Extras.DSL.Typed: type (=:) (a :: k) (b :: l) = '(a, b)

Files

CHANGELOG.md view
@@ -6,6 +6,10 @@  ## [Unreleased] +## [0.0.1.2] - 2020-01-17+### Added+- `=:` type synonym to avoid ticks in type-level tuples.+ ## [0.0.1.1] - 2019-12-31 ### Added - `param` combinator to add named parameters to selectors;
hasbolt-extras.cabal view
@@ -1,5 +1,5 @@ name:           hasbolt-extras-version:        0.0.1.1+version:        0.0.1.2 synopsis:       Extras for hasbolt library description:    Extras for hasbolt library homepage:       https://github.com/biocad/hasbolt-extras#readme
src/Database/Bolt/Extras/DSL/Typed.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE ExplicitNamespaces #-}+ {- | Type-safe DSL for Cypher  This module extends selectors from 'Database.Bolt.Extras.DSL.DSL' with extra type-level@@ -24,6 +26,7 @@   , prop   , propMaybe   , param+  , type (=:)   , (=:)   , NodeSelector, RelSelector   , nodeSelector, relSelector@@ -53,9 +56,9 @@   ) where  -import           Database.Bolt.Extras.DSL.Typed.Instances ()-import           Database.Bolt.Extras.DSL.Typed.Types+import           Database.Bolt.Extras.DSL.Typed.Instances  () import           Database.Bolt.Extras.DSL.Typed.Parameters+import           Database.Bolt.Extras.DSL.Typed.Types  {- $setup >>> :set -XDeriveGeneric@@ -63,6 +66,7 @@ >>> :set -XOverloadedLabels >>> :set -XOverloadedStrings >>> :set -XDataKinds+>>> :set -XTypeOperators >>> :load Database.Bolt.Extras.Graph Database.Bolt.Extras.DSL.Typed Database.Bolt.Extras.DSL >>> import Database.Bolt.Extras.DSL.Typed >>> import Data.Text (Text, unpack)@@ -267,7 +271,7 @@ There is an option to annotate queries ('Database.Bolt.Extras.DSL.CypherDSL') with parameters they accept, like this: -> fooQ :: CypherDSLParams '[ '("foo", Int), '("bar", Text) ]+> fooQ :: CypherDSLParams '["foo" =: Int, "bar" =: Text] > fooQ = CypherDSLParams $ do >     matchF [ PS $ p $ #n .& lbl @Foo .& param (#foo =: "foo") .& param (#bar =: "bar") >     returnF ["n"]
src/Database/Bolt/Extras/DSL/Typed/Parameters.hs view
@@ -30,6 +30,7 @@ >>> :set -XOverloadedLabels >>> :set -XDataKinds >>> :set -XOverloadedStrings+>>> :set -XTypeOperators >>> :load Database.Bolt.Extras.DSL.Typed.Instances Database.Bolt.Extras.DSL.Typed.Parameters >>> import Control.Monad.IO.Class >>> import Database.Bolt (BoltActionT, Record)@@ -39,6 +40,8 @@  -- | A wrapper around arbitrary 'CypherDSL' expression which stores type-level list of named -- parameters (@$foo@) with their types.+--+-- It is convenient to write signatures using '(=:)' type synonym. newtype CypherDSLParams (params :: [(Symbol, Type)]) (a :: Type)   = CypherDSLParams (CypherDSL a) @@ -68,7 +71,7 @@ -- -- A couple of examples: ----- >>> dsl = CypherDSLParams (returnF []) :: CypherDSLParams '[ '("foo", Int), '("bar", Text) ] ()+-- >>> dsl = CypherDSLParams (returnF []) :: CypherDSLParams '["foo" =: Int, "bar" =: Text] () -- >>> :t queryWithParams dsl -- queryWithParams dsl --   :: MonadIO m =>
src/Database/Bolt/Extras/DSL/Typed/Types.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE ScopedTypeVariables    #-} {-# LANGUAGE TypeFamilyDependencies #-} {-# LANGUAGE TypeInType             #-}+{-# LANGUAGE TypeOperators          #-}  module Database.Bolt.Extras.DSL.Typed.Types where @@ -146,6 +147,9 @@   => (SymbolS field, Text)   -> a types -> a types param = withParam++-- | Smart constructor for type-level tuples, to avoid writing @'("foo", Int)@ with extra tick.+type (=:) (a :: k) (b :: l) = '(a, b)  -- | Smart constructor for a pair of field name and its value. To be used with @OverloadedLabels@: --