Merge branch 'dev' into dev-merge
[gargantext.git] / src / Gargantext / Database / Query / Table / Node / Error.hs
index d790d0408f577a1a476a363587b2c9ae60a4ed80..c1c170dd128bff7c1b61843326bcf93cd5384436 100644 (file)
@@ -12,20 +12,15 @@ Portability : POSIX
 {-# OPTIONS_GHC -fno-warn-orphans        #-}
 
 {-# LANGUAGE Arrows                 #-}
-{-# LANGUAGE DeriveGeneric          #-}
 {-# LANGUAGE ConstraintKinds        #-}
-{-# LANGUAGE FlexibleContexts       #-}
-{-# LANGUAGE FlexibleInstances      #-}
 {-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE OverloadedStrings      #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
-{-# LANGUAGE NoImplicitPrelude      #-}
-{-# LANGUAGE RankNTypes             #-}
 {-# LANGUAGE TemplateHaskell        #-}
 {-# LANGUAGE TypeFamilies           #-}
 
 module Gargantext.Database.Query.Table.Node.Error where
 
+import Data.Text (Text)
+import Gargantext.Database.Admin.Types.Node (NodeId)
 import Control.Lens (Prism', (#), (^?))
 import Control.Monad.Error.Class (MonadError(..))
 import Gargantext.Prelude hiding (sum, head)
@@ -43,6 +38,9 @@ data NodeError = NoListFound
                | NegativeId
                | NotImplYet
                | ManyNodeUsers
+               | DoesNotExist NodeId
+               | NeedsConfiguration
+               | NodeError Text
 
 instance Show NodeError
   where
@@ -58,10 +56,18 @@ instance Show NodeError
     show NotImplYet    = "Not implemented yet"
     show ManyParents   = "Too many parents"
     show ManyNodeUsers = "Many userNode/user"
+    show (DoesNotExist n)   = "Node does not exist" <> show n
+    show NeedsConfiguration = "Needs configuration"
+    show (NodeError e)      = "NodeError: " <> cs e
 
 class HasNodeError e where
   _NodeError :: Prism' e NodeError
 
+errorWith :: ( MonadError e m
+            , HasNodeError e)
+          => Text -> m a
+errorWith x = nodeError (NodeError x)
+
 nodeError :: ( MonadError e m
              , HasNodeError e)
           => NodeError -> m a