[TOOLING] sql queries to remove unused documents and ngrams from database. Usage...
[gargantext.git] / src / Gargantext / Database / Query / Table / Node / UpdateOpaleye.hs
index 45b26c31975d337a59f52c7e4d3e5c9fb5557f39..bc008e534d06b103b160c4d5b2470910ec08efb1 100644 (file)
@@ -15,14 +15,15 @@ Portability : POSIX
 module Gargantext.Database.Query.Table.Node.UpdateOpaleye
   where
 
-
 import Opaleye
 import Data.Aeson (encode, ToJSON)
+import Gargantext.Core
 import Gargantext.Prelude
-import Gargantext.Database.Schema.Node 
+import Gargantext.Database.Schema.Node
 import Gargantext.Database.Admin.Types.Node
-import Gargantext.Database.Prelude (Cmd, mkCmd)
-import Gargantext.Database.Admin.Types.Node (pgNodeId)
+import Gargantext.Database.Prelude (Cmd, mkCmd, JSONB)
+import Gargantext.Database.Query.Table.Node
+import Gargantext.Database.Query.Table.Node.Error
 
 updateHyperdata :: ToJSON a => NodeId -> a -> Cmd err Int64
 updateHyperdata i h = mkCmd $ \c -> runUpdate_ c (updateHyperdataQuery i h)
@@ -30,11 +31,35 @@ updateHyperdata i h = mkCmd $ \c -> runUpdate_ c (updateHyperdataQuery i h)
 updateHyperdataQuery :: ToJSON a => NodeId -> a -> Update Int64
 updateHyperdataQuery i h = Update
    { uTable      = nodeTable
-   , uUpdateWith = updateEasy (\  (Node _ni _nt _nu _np _nn _nd _h)
-                                -> Node _ni _nt _nu _np _nn _nd h'
+   , uUpdateWith = updateEasy (\  (Node _ni _nh _nt _nu _np _nn _nd _h)
+                                -> Node _ni _nh _nt _nu _np _nn _nd h'
                               )
    , uWhere      = (\row -> _node_id row .== pgNodeId i )
    , uReturning  = rCount
    }
     where h' =  (pgJSONB $ cs $ encode $ h)
 
+----------------------------------------------------------------------------------
+updateNodesWithType :: ( HasNodeError err
+                       , JSONB a
+                       , ToJSON a
+                       , HasDBid NodeType
+                       ) => NodeType -> proxy a -> (a -> a) -> Cmd err [Int64]
+updateNodesWithType nt p f = do
+  ns <- getNodesWithType nt p
+  mapM (\n -> updateHyperdata (_node_id n) (f $ _node_hyperdata n)) ns
+
+
+-- | In case the Hyperdata Types are not compatible
+updateNodesWithType_ :: ( HasNodeError err
+                        , JSONB a
+                        , ToJSON a
+                        , HasDBid NodeType
+                        ) => NodeType -> a -> Cmd err [Int64]
+updateNodesWithType_ nt h = do
+  ns <- getNodesIdWithType nt
+  mapM (\n -> updateHyperdata n h) ns
+
+
+
+