import Gargantext.Database.Schema.Node
import Gargantext.Prelude
+------------------------------------------------------------------------
+getUserLightWithId :: HasNodeError err => Int -> Cmd err UserLight
+getUserLightWithId i = do
+ candidates <- head <$> getUsersWithId i
+ case candidates of
+ Nothing -> nodeError NoUserFound
+ Just u -> pure u
+
+getUserLightDB :: HasNodeError err => User -> Cmd err UserLight
+getUserLightDB u = do
+ userId <- getUserId u
+ userLight <- getUserLightWithId userId
+ pure userLight
+
------------------------------------------------------------------------
getUserId :: HasNodeError err
=> User
-> Cmd err UserId
-getUserId (UserDBId uid) = pure uid
-getUserId (RootId rid) = do
+getUserId u = do
+ maybeUser <- getUserId' u
+ case maybeUser of
+ Nothing -> nodeError NoUserFound
+ Just u' -> pure u'
+
+getUserId' :: HasNodeError err
+ => User
+ -> Cmd err (Maybe UserId)
+getUserId' (UserDBId uid) = pure (Just uid)
+getUserId' (RootId rid) = do
n <- getNode rid
- pure $ _node_userId n
-getUserId (UserName u ) = do
+ pure $ Just $ _node_user_id n
+getUserId' (UserName u ) = do
muser <- getUser u
case muser of
- Just user -> pure $ userLight_id user
- Nothing -> nodeError NoUserFound
-getUserId UserPublic = nodeError NoUserFound
+ Just user -> pure $ Just $ userLight_id user
+ Nothing -> pure Nothing
+getUserId' UserPublic = pure Nothing
------------------------------------------------------------------------
-- | Username = Text
-- UserName is User
-- that is confusing, we should change this
+type Username = Text
getUsername :: HasNodeError err
=> User
- -> Cmd err Text
+ -> Cmd err Username
getUsername (UserName u) = pure u
getUsername (UserDBId i) = do
users <- getUsersWithId i
Nothing -> nodeError $ NodeError "G.D.A.U.getUserName: User not found with that id"
getUsername (RootId rid) = do
n <- getNode rid
- getUsername (UserDBId $ _node_userId n)
+ getUsername (UserDBId $ _node_user_id n)
getUsername UserPublic = pure "UserPublic"
--------------------------------------------------------------------------