Add client executable to run 'scripts' against a running Garg backend
[gargantext.git] / src / Gargantext / Database / Action / Delete.hs
index cde0b2673ef36d3595d332ad6b0f7fbcb536c4c2..309653807b4347a6f21288a01a533e1057e45cfb 100644 (file)
@@ -21,40 +21,42 @@ import Control.Lens     (view, (^.))
 import Data.Text
 import Servant
 
-import Gargantext.API.Admin.Settings
+import Gargantext.Core
+import Gargantext.Core.Mail.Types (HasMail)
 import Gargantext.Core.Types.Individu (User(..))
-import Gargantext.Database.Action.Flow.Utils (getUserId)
 import Gargantext.Database.Action.Share (delFolderTeam)
-import Gargantext.Database.Admin.Config (nodeTypeId)
+import Gargantext.Database.Action.User (getUserId)
 import Gargantext.Database.Admin.Types.Hyperdata.File
 import Gargantext.Database.Admin.Types.Node -- (NodeType(..))
 import Gargantext.Database.Prelude (Cmd', HasConfig, HasConnectionPool)
-import qualified Gargantext.Database.Query.Table.Node as N (getNode, deleteNode)
 import Gargantext.Database.Query.Table.Node (getNodeWith)
 import Gargantext.Database.Query.Table.Node.Error (HasNodeError)
 import Gargantext.Database.Schema.Node
 import Gargantext.Prelude
-import qualified Gargantext.Prelude.Utils as GPU
+import qualified Gargantext.Database.GargDB as GargDB
+import qualified Gargantext.Database.Query.Table.Node as N (getNode, deleteNode)
 
 ------------------------------------------------------------------------
-
-deleteNode :: (HasConfig env, HasConnectionPool env, HasNodeError err, HasSettings env)
+-- TODO
+-- Delete Corpus children accoring its types
+-- Delete NodeList (NodeStory + cbor file)
+deleteNode :: (HasMail env, HasConfig env, HasConnectionPool env, HasNodeError err)
            => User
            -> NodeId
            -> Cmd' env err Int
 deleteNode u nodeId = do
   node' <- N.getNode nodeId
   case (view node_typename node') of
-    nt | nt == nodeTypeId NodeUser -> panic "Not allowed to delete NodeUser (yet)"
-    nt | nt == nodeTypeId NodeTeam -> do
+    nt | nt == toDBid NodeUser -> panic "[G.D.A.D.deleteNode] Not allowed to delete NodeUser (yet)"
+    nt | nt == toDBid NodeTeam -> do
       uId   <- getUserId u
-      if _node_userId node' == uId
+      if _node_user_id node' == uId
         then N.deleteNode    nodeId
         else delFolderTeam u nodeId
-    nt | nt == nodeTypeId NodeFile -> do
+    nt | nt == toDBid NodeFile -> do
       node <- getNodeWith nodeId (Proxy :: Proxy HyperdataFile)
       let (HyperdataFile { _hff_path = path }) = node ^. node_hyperdata
-      GPU.removeFile $ unpack path
+      GargDB.rmFile $ unpack path
       N.deleteNode nodeId
     _                             -> N.deleteNode nodeId
    
@@ -63,7 +65,7 @@ deleteNode u nodeId = do
   --    else if hasNodeType node' NodeTeam
   --            then do
   --               uId   <- getUserId u
-  --               if _node_userId node' == uId
+  --               if _node_user_id node' == uId
   --                  then N.deleteNode    nodeId
   --                  else delFolderTeam u nodeId
   --            else N.deleteNode nodeId