packages feed

hasbolt-extras 0.0.0.6 → 0.0.0.7

raw patch · 5 files changed

+46/−4 lines, 5 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Database.Bolt.Extras.Query: deleteNodes :: (MonadIO m) => [BoltId] -> BoltActionT m [BoltId]

Files

CHANGELOG.md view
@@ -6,6 +6,10 @@  ## [Unreleased] +## [0.0.0.7] - 2018-04-23+### Added+- Added ability to delete nodes by their `BoltId`s.+ ## [0.0.0.6] - 2018-04-20 ### Added - Added ability to update properties of the existing node; added ability to choose
hasbolt-extras.cabal view
@@ -1,5 +1,5 @@ name:           hasbolt-extras-version:        0.0.0.6+version:        0.0.0.7 synopsis:       Extras for hasbolt library description:    Extras for hasbolt library homepage:       https://github.com/biocad/hasbolt-extras#readme@@ -33,6 +33,7 @@   other-modules:       Database.Bolt.Extras.Query.Get                      , Database.Bolt.Extras.Query.Put                      , Database.Bolt.Extras.Query.Set+                     , Database.Bolt.Extras.Query.Delete                      , Database.Bolt.Extras.Query.Utils                        Database.Bolt.Extras.Query.Cypher                   
src/Database/Bolt/Extras/Query.hs view
@@ -12,6 +12,7 @@   , getGraph   , putGraph   , setNode+  , deleteNodes   ) where  import           Database.Bolt.Extras.Query.Cypher (ToCypher (..))@@ -25,4 +26,5 @@                                                     PutRelationship (..),                                                     putGraph) import           Database.Bolt.Extras.Query.Set    (setNode)+import           Database.Bolt.Extras.Query.Delete (deleteNodes) import           Database.Bolt.Extras.Query.Utils  (NodeName)
+ src/Database/Bolt/Extras/Query/Delete.hs view
@@ -0,0 +1,35 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes       #-}++module Database.Bolt.Extras.Query.Delete+  (+    deleteNodes+  ) where++import           Control.Monad                  (forM)+import           Control.Monad.IO.Class         (MonadIO)+import           Data.Text                      (Text, intercalate, pack)+import           Database.Bolt                  (BoltActionT, RecordValue (..),+                                                 at, exact, query)+import           Database.Bolt.Extras.Persisted (BoltId, fromInt)+import           NeatInterpolation              (text)++-- | 'deleteNodes' is used to delete all nodes with given 'BoltId's+-- and all corresponding relatioships.+--+deleteNodes :: (MonadIO m) => [BoltId] -> BoltActionT m [BoltId]+deleteNodes boltIds = do+    records <- query formQuery+    forM records $ \record -> do+      nodeIdentity' <- record `at` varQ >>= exact+      pure $ fromInt nodeIdentity'+  where+    varQ = "n"++    formBoltIds :: Text+    formBoltIds = intercalate ", " $ fmap (pack . show) boltIds++    formQuery = [text|MATCH ($varQ)+                      WHERE ID($varQ) IN [$formBoltIds]+                      DETACH DELETE $varQ+                      RETURN ID($varQ) as $varQ|]
src/Database/Bolt/Extras/Query/Set.hs view
@@ -10,7 +10,7 @@ import           Data.Text                           (Text, append, intercalate) import           Database.Bolt                       (BoltActionT,                                                       RecordValue (..), at,-                                                      exact, query)+                                                      exact, query, Value (..)) import           Database.Bolt.Extras.Persisted      (BoltId, fromInt) import           Database.Bolt.Extras.Query.Cypher   (ToCypher (..)) import           Database.Bolt.Extras.Query.Get      (NodeGetter, condIdAsText,@@ -26,11 +26,11 @@     let nodeGetterT = nodeAsText (varQ, nodeGetter)     let condId      = condIdAsText (varQ, nodeGetter) -    let newProperties = intercalate ", " $ fmap formPropertySet props+    let newProperties = intercalate "," $ fmap formPropertySet $ filter ((/= N ()) . snd) props      let getQuery = [text|MATCH $nodeGetterT                          WHERE $condId-    					           SET $newProperties+                         SET $newProperties                          RETURN ID($varQ) as $varQ|]      record <- head <$> query getQuery