diff options
Diffstat (limited to 'src/Data/JLD/Model')
-rw-r--r-- | src/Data/JLD/Model/NodeMap.hs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/Data/JLD/Model/NodeMap.hs b/src/Data/JLD/Model/NodeMap.hs index d0fb2f9..f76c662 100644 --- a/src/Data/JLD/Model/NodeMap.hs +++ b/src/Data/JLD/Model/NodeMap.hs | |||
@@ -10,13 +10,18 @@ module Data.JLD.Model.NodeMap ( | |||
10 | hasKey2, | 10 | hasKey2, |
11 | hasKey3, | 11 | hasKey3, |
12 | memberArray, | 12 | memberArray, |
13 | propsToKeyMap, | ||
13 | ) where | 14 | ) where |
14 | 15 | ||
15 | import Data.JLD.Prelude hiding (modify) | 16 | import Data.JLD.Prelude hiding (modify) |
16 | 17 | ||
17 | import Data.Aeson (Array, Value (..)) | 18 | import Data.Aeson (Array, Value (..)) |
19 | import Data.Aeson.Key qualified as K | ||
20 | import Data.Aeson.KeyMap (KeyMap) | ||
21 | import Data.Aeson.KeyMap qualified as KM | ||
22 | import Data.Foldable.WithIndex (FoldableWithIndex (..)) | ||
18 | import Data.JLD.Util (valueToArray) | 23 | import Data.JLD.Util (valueToArray) |
19 | import Data.Map.Strict qualified as M (alter, insert, lookup, member) | 24 | import Data.Map.Strict qualified as M (alter, insert, lookup, member, toList) |
20 | 25 | ||
21 | type PropertyKey = Maybe Text | 26 | type PropertyKey = Maybe Text |
22 | type PropertyMap = Map PropertyKey Value | 27 | type PropertyMap = Map PropertyKey Value |
@@ -55,3 +60,12 @@ memberArray :: GraphKey -> SubjectKey -> PropertyKey -> Value -> NodeMap -> Bool | |||
55 | memberArray graphName subject property value nodeMap = case lookup3 graphName subject property nodeMap of | 60 | memberArray graphName subject property value nodeMap = case lookup3 graphName subject property nodeMap of |
56 | Just (Array a) -> value `elem` a | 61 | Just (Array a) -> value `elem` a |
57 | _ -> False | 62 | _ -> False |
63 | |||
64 | propsToKeyMap :: PropertyMap -> KeyMap Value | ||
65 | propsToKeyMap = | ||
66 | ifoldl' | ||
67 | ( \maybeKey km value -> case maybeKey of | ||
68 | Just key -> KM.insert (K.fromText key) value km | ||
69 | Nothing -> km | ||
70 | ) | ||
71 | mempty | ||