[refactor] yet more Cmd -> DBCmd refactoring

parent 74e42e7b
Pipeline #5240 passed with stages
in 76 minutes and 28 seconds
...@@ -58,7 +58,7 @@ import Gargantext.Core.Mail.Types (mailSettings) ...@@ -58,7 +58,7 @@ import Gargantext.Core.Mail.Types (mailSettings)
import Gargantext.Core.Types.Individu (User(..), Username, GargPassword(..)) import Gargantext.Core.Types.Individu (User(..), Username, GargPassword(..))
import Gargantext.Database.Action.Flow.Types (FlowCmdM) import Gargantext.Database.Action.Flow.Types (FlowCmdM)
import Gargantext.Database.Admin.Types.Node (NodeId(..)) import Gargantext.Database.Admin.Types.Node (NodeId(..))
import Gargantext.Database.Prelude (Cmd', CmdM, CmdCommon) import Gargantext.Database.Prelude (Cmd', CmdCommon, DbCmd')
import Gargantext.Database.Query.Table.User import Gargantext.Database.Query.Table.User
import Gargantext.Database.Query.Tree (isDescendantOf, isIn) import Gargantext.Database.Query.Tree (isDescendantOf, isIn)
import Gargantext.Database.Query.Tree.Root (getRoot) import Gargantext.Database.Query.Tree.Root (getRoot)
...@@ -79,7 +79,8 @@ import Gargantext.API.Auth.PolicyCheck ...@@ -79,7 +79,8 @@ import Gargantext.API.Auth.PolicyCheck
-- | Main functions of authorization -- | Main functions of authorization
makeTokenForUser :: (HasSettings env, HasJoseError err) makeTokenForUser :: ( HasSettings env
, HasJoseError err )
=> NodeId -> Cmd' env err Token => NodeId -> Cmd' env err Token
makeTokenForUser uid = do makeTokenForUser uid = do
jwtS <- view $ settings . jwtSettings jwtS <- view $ settings . jwtSettings
...@@ -88,10 +89,10 @@ makeTokenForUser uid = do ...@@ -88,10 +89,10 @@ makeTokenForUser uid = do
either joseError (pure . toStrict . LE.decodeUtf8) e either joseError (pure . toStrict . LE.decodeUtf8) e
-- TODO not sure about the encoding... -- TODO not sure about the encoding...
checkAuthRequest :: ( HasSettings env, CmdCommon env, HasJoseError err) checkAuthRequest :: ( HasSettings env, HasJoseError err, DbCmd' env err m )
=> Username => Username
-> GargPassword -> GargPassword
-> Cmd' env err CheckAuth -> m CheckAuth
checkAuthRequest couldBeEmail (GargPassword p) = do checkAuthRequest couldBeEmail (GargPassword p) = do
-- Sometimes user put email instead of username -- Sometimes user put email instead of username
-- hence we have to check before -- hence we have to check before
...@@ -113,8 +114,8 @@ checkAuthRequest couldBeEmail (GargPassword p) = do ...@@ -113,8 +114,8 @@ checkAuthRequest couldBeEmail (GargPassword p) = do
token <- makeTokenForUser uid token <- makeTokenForUser uid
pure $ Valid token uid userLight_id pure $ Valid token uid userLight_id
auth :: (HasSettings env, CmdCommon env, HasJoseError err) auth :: (HasSettings env, HasJoseError err, DbCmd' env err m)
=> AuthRequest -> Cmd' env err AuthResponse => AuthRequest -> m AuthResponse
auth (AuthRequest u p) = do auth (AuthRequest u p) = do
checkAuthRequest' <- checkAuthRequest u p checkAuthRequest' <- checkAuthRequest u p
case checkAuthRequest' of case checkAuthRequest' of
...@@ -135,7 +136,7 @@ authCheck _env (BasicAuthData login password) = pure $ ...@@ -135,7 +136,7 @@ authCheck _env (BasicAuthData login password) = pure $
maybe Indefinite Authenticated $ TODO maybe Indefinite Authenticated $ TODO
-} -}
withAccessM :: (CmdM env err m, HasServerError err) withAccessM :: ( DbCmd' env err m )
=> AuthenticatedUser => AuthenticatedUser
-> PathId -> PathId
-> m a -> m a
...@@ -143,7 +144,6 @@ withAccessM :: (CmdM env err m, HasServerError err) ...@@ -143,7 +144,6 @@ withAccessM :: (CmdM env err m, HasServerError err)
withAccessM (AuthenticatedUser uId) (PathNode id) m = do withAccessM (AuthenticatedUser uId) (PathNode id) m = do
d <- id `isDescendantOf` uId d <- id `isDescendantOf` uId
if d then m else m -- serverError err401 if d then m else m -- serverError err401
withAccessM (AuthenticatedUser uId) (PathNodeNode cId docId) m = do withAccessM (AuthenticatedUser uId) (PathNodeNode cId docId) m = do
_a <- isIn cId docId -- TODO use one query for all ? _a <- isIn cId docId -- TODO use one query for all ?
_d <- cId `isDescendantOf` uId _d <- cId `isDescendantOf` uId
......
...@@ -4,24 +4,21 @@ ...@@ -4,24 +4,21 @@
module Gargantext.API.GraphQL.User where module Gargantext.API.GraphQL.User where
import Data.Maybe (listToMaybe) import Data.Maybe (listToMaybe)
import Data.Morpheus.Types import Data.Morpheus.Types ( GQLType , lift )
( GQLType
, lift
)
import Data.Text (Text) import Data.Text (Text)
import GHC.Generics (Generic) import GHC.Generics (Generic)
import Gargantext.API.Admin.Auth.Types
import Gargantext.API.Admin.Types (HasSettings) import Gargantext.API.Admin.Types (HasSettings)
import Gargantext.API.Auth.PolicyCheck
import Gargantext.API.GraphQL.PolicyCheck
import Gargantext.API.GraphQL.Types import Gargantext.API.GraphQL.Types
import Gargantext.Core.Types.Individu qualified as Individu
import Gargantext.Database.Admin.Types.Hyperdata (HyperdataUser(..)) import Gargantext.Database.Admin.Types.Hyperdata (HyperdataUser(..))
import Gargantext.Database.Admin.Types.Node (NodeId(..)) import Gargantext.Database.Admin.Types.Node (NodeId(..))
import Gargantext.Database.Prelude (CmdCommon) import Gargantext.Database.Prelude (CmdCommon)
import Gargantext.Database.Query.Table.User qualified as DBUser
import Gargantext.Database.Schema.User (UserLight(..)) import Gargantext.Database.Schema.User (UserLight(..))
import Gargantext.Prelude import Gargantext.Prelude
import qualified Gargantext.Core.Types.Individu as Individu
import qualified Gargantext.Database.Query.Table.User as DBUser
import Gargantext.API.Admin.Auth.Types
import Gargantext.API.Auth.PolicyCheck
import Gargantext.API.GraphQL.PolicyCheck
data User m = User data User m = User
{ u_email :: Text { u_email :: Text
...@@ -54,9 +51,8 @@ resolveUsers autUser mgr UserArgs { user_id } = do ...@@ -54,9 +51,8 @@ resolveUsers autUser mgr UserArgs { user_id } = do
withPolicy autUser mgr alwaysAllow $ dbUsers user_id withPolicy autUser mgr alwaysAllow $ dbUsers user_id
-- | Inner function to fetch the user from DB. -- | Inner function to fetch the user from DB.
dbUsers dbUsers :: (CmdCommon env)
:: (CmdCommon env) => Int -> GqlM e env [User (GqlM e env)]
=> Int -> GqlM e env [User (GqlM e env)]
dbUsers user_id = lift (map toUser <$> DBUser.getUsersWithId (Individu.RootId $ NodeId user_id)) dbUsers user_id = lift (map toUser <$> DBUser.getUsersWithId (Individu.RootId $ NodeId user_id))
toUser toUser
......
...@@ -35,12 +35,8 @@ import Data.Aeson.TH (deriveJSON) ...@@ -35,12 +35,8 @@ import Data.Aeson.TH (deriveJSON)
import Data.Maybe import Data.Maybe
import Data.Swagger import Data.Swagger
import Data.Text (Text()) import Data.Text (Text())
import Data.Text qualified as T
import GHC.Generics (Generic) import GHC.Generics (Generic)
import Prelude
import Servant
import Test.QuickCheck (elements)
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
import Gargantext.API.HashedResponse import Gargantext.API.HashedResponse
import Gargantext.API.Ngrams.Types (TabType(..)) import Gargantext.API.Ngrams.Types (TabType(..))
import Gargantext.API.Prelude (GargServer) import Gargantext.API.Prelude (GargServer)
...@@ -56,7 +52,10 @@ import Gargantext.Database.Query.Facet (FacetDoc , runViewDocuments, runCountDoc ...@@ -56,7 +52,10 @@ import Gargantext.Database.Query.Facet (FacetDoc , runViewDocuments, runCountDoc
import Gargantext.Database.Query.Table.Node.Error (HasNodeError) import Gargantext.Database.Query.Table.Node.Error (HasNodeError)
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.System.Logging import Gargantext.System.Logging
import qualified Data.Text as T import Prelude
import Servant
import Test.QuickCheck (elements)
import Test.QuickCheck.Arbitrary (Arbitrary, arbitrary)
------------------------------------------------------------------------ ------------------------------------------------------------------------
...@@ -156,7 +155,7 @@ getTableHashApi cId tabType = do ...@@ -156,7 +155,7 @@ getTableHashApi cId tabType = do
HashedResponse { hash = h } <- getTableApi cId tabType Nothing Nothing Nothing Nothing Nothing HashedResponse { hash = h } <- getTableApi cId tabType Nothing Nothing Nothing Nothing Nothing
pure h pure h
searchInCorpus' :: (CmdM env err m, MonadLogger m) searchInCorpus' :: (DbCmd' env err m, MonadLogger m)
=> CorpusId => CorpusId
-> Bool -> Bool
-> RawQuery -> RawQuery
...@@ -201,7 +200,7 @@ getTable' :: HasNodeError err ...@@ -201,7 +200,7 @@ getTable' :: HasNodeError err
-> Maybe OrderBy -> Maybe OrderBy
-> Maybe Text -> Maybe Text
-> Maybe Text -> Maybe Text
-> Cmd err [FacetDoc] -> DBCmd err [FacetDoc]
getTable' cId ft o l order query year = getTable' cId ft o l order query year =
case ft of case ft of
(Just Docs) -> runViewDocuments cId False o l order query year (Just Docs) -> runViewDocuments cId False o l order query year
...@@ -213,7 +212,7 @@ getTable' cId ft o l order query year = ...@@ -213,7 +212,7 @@ getTable' cId ft o l order query year =
getPair :: ContactId -> Maybe TabType getPair :: ContactId -> Maybe TabType
-> Maybe Offset -> Maybe Limit -> Maybe Offset -> Maybe Limit
-> Maybe OrderBy -> Cmd err [FacetDoc] -> Maybe OrderBy -> DBCmd err [FacetDoc]
getPair cId ft o l order = getPair cId ft o l order =
case ft of case ft of
(Just Docs) -> runViewAuthorsDoc cId False o l order (Just Docs) -> runViewAuthorsDoc cId False o l order
......
...@@ -36,7 +36,7 @@ import Gargantext.Database.Query.Table.NodeNode ...@@ -36,7 +36,7 @@ import Gargantext.Database.Query.Table.NodeNode
class InsertDB a where class InsertDB a where
insertDB :: a -> Cmd err Int insertDB :: a -> DBCmd err Int
{- {-
class DeleteDB a where class DeleteDB a where
......
...@@ -15,19 +15,19 @@ Portability : POSIX ...@@ -15,19 +15,19 @@ Portability : POSIX
module Gargantext.Database.Action.Learn module Gargantext.Database.Action.Learn
where where
import Data.List qualified as List
import Data.Maybe import Data.Maybe
import Data.Text (Text) import Data.Text (Text)
import Data.Text qualified as Text
import Gargantext.Core import Gargantext.Core
import Gargantext.Core.Text.Learn
import Gargantext.Core.Types.Query (Offset, Limit(..)) import Gargantext.Core.Types.Query (Offset, Limit(..))
import Gargantext.Database.Admin.Types.Hyperdata import Gargantext.Database.Admin.Types.Hyperdata
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Prelude (DBCmd)
import Gargantext.Database.Query.Facet import Gargantext.Database.Query.Facet
import Gargantext.Database.Query.Table.Node.Error (HasNodeError) import Gargantext.Database.Query.Table.Node.Error (HasNodeError)
import Gargantext.Database.Prelude (Cmd)
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Core.Text.Learn
import qualified Data.List as List
import qualified Data.Text as Text
data FavOrTrash = IsFav | IsTrash data FavOrTrash = IsFav | IsTrash
deriving (Eq) deriving (Eq)
...@@ -35,14 +35,14 @@ data FavOrTrash = IsFav | IsTrash ...@@ -35,14 +35,14 @@ data FavOrTrash = IsFav | IsTrash
moreLike :: (HasDBid NodeType, HasNodeError err) moreLike :: (HasDBid NodeType, HasNodeError err)
=> CorpusId -> Maybe Offset -> Maybe Limit -> Maybe OrderBy => CorpusId -> Maybe Offset -> Maybe Limit -> Maybe OrderBy
-> FavOrTrash -> Cmd err [FacetDoc] -> FavOrTrash -> DBCmd err [FacetDoc]
moreLike cId o _l order ft = do moreLike cId o _l order ft = do
priors <- getPriors ft cId priors <- getPriors ft cId
moreLikeWith cId o (Just 3) order ft priors moreLikeWith cId o (Just 3) order ft priors
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
getPriors :: (HasDBid NodeType, HasNodeError err) getPriors :: (HasDBid NodeType, HasNodeError err)
=> FavOrTrash -> CorpusId -> Cmd err (Events Bool) => FavOrTrash -> CorpusId -> DBCmd err (Events Bool)
getPriors ft cId = do getPriors ft cId = do
docs_fav <- filter (\(FacetDoc _ _ _ _ f _ _) -> f == Just 2) docs_fav <- filter (\(FacetDoc _ _ _ _ f _ _) -> f == Just 2)
...@@ -60,7 +60,7 @@ getPriors ft cId = do ...@@ -60,7 +60,7 @@ getPriors ft cId = do
moreLikeWith :: (HasDBid NodeType, HasNodeError err) moreLikeWith :: (HasDBid NodeType, HasNodeError err)
=> CorpusId -> Maybe Offset -> Maybe Limit -> Maybe OrderBy => CorpusId -> Maybe Offset -> Maybe Limit -> Maybe OrderBy
-> FavOrTrash -> Events Bool -> Cmd err [FacetDoc] -> FavOrTrash -> Events Bool -> DBCmd err [FacetDoc]
moreLikeWith cId o l order ft priors = do moreLikeWith cId o l order ft priors = do
docs_test <- filter (\(FacetDoc _ _ _ _ f _ _) -> f == Just 1) docs_test <- filter (\(FacetDoc _ _ _ _ f _ _) -> f == Just 1)
......
...@@ -135,12 +135,12 @@ _updateUsersPassword us = do ...@@ -135,12 +135,12 @@ _updateUsersPassword us = do
pure 1 pure 1
------------------------------------------------------------------------ ------------------------------------------------------------------------
_rmUser :: HasNodeError err => User -> Cmd err Int64 _rmUser :: HasNodeError err => User -> DBCmd err Int64
_rmUser (UserName un) = deleteUsers [un] _rmUser (UserName un) = deleteUsers [un]
_rmUser _ = nodeError NotImplYet _rmUser _ = nodeError NotImplYet
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- TODO -- TODO
_rmUsers :: HasNodeError err => [User] -> Cmd err Int64 _rmUsers :: HasNodeError err => [User] -> DBCmd err Int64
_rmUsers [] = pure 0 _rmUsers [] = pure 0
_rmUsers _ = undefined _rmUsers _ = undefined
...@@ -144,17 +144,15 @@ runCountOpaQuery q = do ...@@ -144,17 +144,15 @@ runCountOpaQuery q = do
-- countRows is guaranteed to return a list with exactly one row so DL.head is safe here -- countRows is guaranteed to return a list with exactly one row so DL.head is safe here
pure $ fromInt64ToInt $ DL.head counts pure $ fromInt64ToInt $ DL.head counts
formatPGSQuery :: PGS.ToRow a => PGS.Query -> a -> Cmd err DB.ByteString formatPGSQuery :: PGS.ToRow a => PGS.Query -> a -> DBCmd err DB.ByteString
formatPGSQuery q a = mkCmd $ \conn -> PGS.formatQuery conn q a formatPGSQuery q a = mkCmd $ \conn -> PGS.formatQuery conn q a
-- TODO use runPGSQueryDebug everywhere -- TODO use runPGSQueryDebug everywhere
runPGSQuery' :: (PGS.ToRow a, PGS.FromRow b) => PGS.Query -> a -> Cmd err [b] runPGSQuery' :: (PGS.ToRow a, PGS.FromRow b) => PGS.Query -> a -> DBCmd err [b]
runPGSQuery' q a = mkCmd $ \conn -> PGS.query conn q a runPGSQuery' q a = mkCmd $ \conn -> PGS.query conn q a
runPGSQuery :: ( DbCmd' env err m runPGSQuery :: ( PGS.FromRow r, PGS.ToRow q )
, PGS.FromRow r, PGS.ToRow q => PGS.Query -> q -> DBCmd err [r]
)
=> PGS.Query -> q -> m [r]
runPGSQuery q a = mkCmd $ \conn -> catch (PGS.query conn q a) (printError conn) runPGSQuery q a = mkCmd $ \conn -> catch (PGS.query conn q a) (printError conn)
where where
printError c (SomeException e) = do printError c (SomeException e) = do
...@@ -179,10 +177,8 @@ runPGSQueryFold q initialState consume = mkCmd $ \conn -> catch (PGS.fold_ conn ...@@ -179,10 +177,8 @@ runPGSQueryFold q initialState consume = mkCmd $ \conn -> catch (PGS.fold_ conn
-- | TODO catch error -- | TODO catch error
runPGSQuery_ :: ( CmdM env err m runPGSQuery_ :: ( PGS.FromRow r )
, PGS.FromRow r => PGS.Query -> DBCmd err [r]
)
=> PGS.Query -> m [r]
runPGSQuery_ q = mkCmd $ \conn -> catch (PGS.query_ conn q) printError runPGSQuery_ q = mkCmd $ \conn -> catch (PGS.query_ conn q) printError
where where
printError (SomeException e) = do printError (SomeException e) = do
...@@ -227,7 +223,7 @@ fromField' field mb = do ...@@ -227,7 +223,7 @@ fromField' field mb = do
printSqlOpa :: Default Unpackspec a a => Select a -> IO () printSqlOpa :: Default Unpackspec a a => Select a -> IO ()
printSqlOpa = putStrLn . maybe "Empty query" identity . showSql printSqlOpa = putStrLn . maybe "Empty query" identity . showSql
dbCheck :: CmdM env err m => m Bool dbCheck :: DBCmd err Bool
dbCheck = do dbCheck = do
r :: [PGS.Only Text] <- runPGSQuery_ "select username from public.auth_user" r :: [PGS.Only Text] <- runPGSQuery_ "select username from public.auth_user"
case r of case r of
......
...@@ -70,7 +70,7 @@ runViewAuthorsDoc :: HasDBid NodeType ...@@ -70,7 +70,7 @@ runViewAuthorsDoc :: HasDBid NodeType
-> Maybe Offset -> Maybe Offset
-> Maybe Limit -> Maybe Limit
-> Maybe OrderBy -> Maybe OrderBy
-> Cmd err [FacetDoc] -> DBCmd err [FacetDoc]
runViewAuthorsDoc cId t o l order = runOpaQuery $ filterWith o l order $ viewAuthorsDoc cId t ntId runViewAuthorsDoc cId t o l order = runOpaQuery $ filterWith o l order $ viewAuthorsDoc cId t ntId
where where
ntId = NodeDocument ntId = NodeDocument
...@@ -125,11 +125,11 @@ runViewDocuments :: (HasDBid NodeType, HasNodeError err) ...@@ -125,11 +125,11 @@ runViewDocuments :: (HasDBid NodeType, HasNodeError err)
-> Maybe OrderBy -> Maybe OrderBy
-> Maybe Text -> Maybe Text
-> Maybe Text -> Maybe Text
-> Cmd err [FacetDoc] -> DBCmd err [FacetDoc]
runViewDocuments cId t o l order query year = do runViewDocuments cId t o l order query year = do
listId <- defaultList cId listId <- defaultList cId
res <- runOpaQuery $ filterWith' o l order (sqlQuery listId) :: Cmd err [FacetDocAgg'] res <- runOpaQuery $ filterWith' o l order (sqlQuery listId) :: DBCmd err [FacetDocAgg']
pure $ remapNgramsCount <$> res pure $ remapNgramsCount <$> res
where where
sqlQuery lId = viewDocuments cId lId t (toDBid NodeDocument) query year sqlQuery lId = viewDocuments cId lId t (toDBid NodeDocument) query year
...@@ -140,7 +140,7 @@ runViewDocuments cId t o l order query year = do ...@@ -140,7 +140,7 @@ runViewDocuments cId t o l order query year = do
, .. } , .. }
runCountDocuments :: (HasDBid NodeType, HasNodeError err) runCountDocuments :: (HasDBid NodeType, HasNodeError err)
=> CorpusId -> IsTrash -> Maybe Text -> Maybe Text -> Cmd err Int => CorpusId -> IsTrash -> Maybe Text -> Maybe Text -> DBCmd err Int
runCountDocuments cId t mQuery mYear = do runCountDocuments cId t mQuery mYear = do
listId <- defaultList cId listId <- defaultList cId
runCountOpaQuery (sqlQuery listId) runCountOpaQuery (sqlQuery listId)
......
...@@ -28,7 +28,7 @@ import Data.HashMap.Strict (HashMap) ...@@ -28,7 +28,7 @@ import Data.HashMap.Strict (HashMap)
import Data.Map.Strict (Map) import Data.Map.Strict (Map)
import Data.Text (Text) import Data.Text (Text)
import Gargantext.Core.Types import Gargantext.Core.Types
import Gargantext.Database.Prelude (runOpaQuery, Cmd, formatPGSQuery, runPGSQuery, DBCmd) import Gargantext.Database.Prelude (runOpaQuery, formatPGSQuery, runPGSQuery, DBCmd)
import Gargantext.Database.Query.Join (leftJoin3) import Gargantext.Database.Query.Join (leftJoin3)
import Gargantext.Database.Query.Table.ContextNodeNgrams2 import Gargantext.Database.Query.Table.ContextNodeNgrams2
import Gargantext.Database.Query.Table.NodeNgrams (queryNodeNgramsTable) import Gargantext.Database.Query.Table.NodeNgrams (queryNodeNgramsTable)
...@@ -45,7 +45,7 @@ import qualified Database.PostgreSQL.Simple as PGS ...@@ -45,7 +45,7 @@ import qualified Database.PostgreSQL.Simple as PGS
queryNgramsTable :: Select NgramsRead queryNgramsTable :: Select NgramsRead
queryNgramsTable = selectTable ngramsTable queryNgramsTable = selectTable ngramsTable
selectNgramsByDoc :: [ListId] -> DocId -> NgramsType -> Cmd err [Text] selectNgramsByDoc :: [ListId] -> DocId -> NgramsType -> DBCmd err [Text]
selectNgramsByDoc lIds dId nt = runOpaQuery (query lIds dId nt) selectNgramsByDoc lIds dId nt = runOpaQuery (query lIds dId nt)
where where
...@@ -65,10 +65,10 @@ selectNgramsByDoc lIds dId nt = runOpaQuery (query lIds dId nt) ...@@ -65,10 +65,10 @@ selectNgramsByDoc lIds dId nt = runOpaQuery (query lIds dId nt)
returnA -< ng^.ngrams_terms returnA -< ng^.ngrams_terms
_postNgrams :: CorpusId -> DocId -> [Text] -> Cmd err Int _postNgrams :: CorpusId -> DocId -> [Text] -> DBCmd err Int
_postNgrams = undefined _postNgrams = undefined
_dbGetNgramsDb :: Cmd err [NgramsDB] _dbGetNgramsDb :: DBCmd err [NgramsDB]
_dbGetNgramsDb = runOpaQuery queryNgramsTable _dbGetNgramsDb = runOpaQuery queryNgramsTable
...@@ -85,7 +85,7 @@ insertNgrams' ns = runPGSQuery queryInsertNgrams (PGS.Only $ Values fields ns) ...@@ -85,7 +85,7 @@ insertNgrams' ns = runPGSQuery queryInsertNgrams (PGS.Only $ Values fields ns)
where where
fields = map (\t -> QualifiedIdentifier Nothing t) ["text", "int4"] fields = map (\t -> QualifiedIdentifier Nothing t) ["text", "int4"]
_insertNgrams_Debug :: [(Text, Size)] -> Cmd err ByteString _insertNgrams_Debug :: [(Text, Size)] -> DBCmd err ByteString
_insertNgrams_Debug ns = formatPGSQuery queryInsertNgrams (PGS.Only $ Values fields ns) _insertNgrams_Debug ns = formatPGSQuery queryInsertNgrams (PGS.Only $ Values fields ns)
where where
fields = map (\t -> QualifiedIdentifier Nothing t) ["text", "int4"] fields = map (\t -> QualifiedIdentifier Nothing t) ["text", "int4"]
...@@ -111,13 +111,13 @@ queryInsertNgrams = [sql| ...@@ -111,13 +111,13 @@ queryInsertNgrams = [sql|
-------------------------------------------------------------------------- --------------------------------------------------------------------------
selectNgramsId :: [Text] -> Cmd err (Map NgramsId Text) selectNgramsId :: [Text] -> DBCmd err (Map NgramsId Text)
selectNgramsId ns = selectNgramsId ns =
if List.null ns if List.null ns
then pure Map.empty then pure Map.empty
else Map.fromList <$> map (\(Indexed i t) -> (i, t)) <$> (selectNgramsId' ns) else Map.fromList <$> map (\(Indexed i t) -> (i, t)) <$> (selectNgramsId' ns)
selectNgramsId' :: [Text] -> Cmd err [Indexed Int Text] selectNgramsId' :: [Text] -> DBCmd err [Indexed Int Text]
selectNgramsId' ns = runPGSQuery querySelectNgramsId ( PGS.Only selectNgramsId' ns = runPGSQuery querySelectNgramsId ( PGS.Only
$ Values fields ns $ Values fields ns
) )
......
...@@ -24,7 +24,7 @@ import Data.Hashable (Hashable) ...@@ -24,7 +24,7 @@ import Data.Hashable (Hashable)
import Data.Text (Text) import Data.Text (Text)
import Gargantext.Core import Gargantext.Core
import Gargantext.Core.Types import Gargantext.Core.Types
import Gargantext.Database.Prelude (Cmd, runPGSQuery, runPGSQuery_, DBCmd) import Gargantext.Database.Prelude (runPGSQuery, runPGSQuery_, DBCmd)
import Gargantext.Database.Schema.Ngrams import Gargantext.Database.Schema.Ngrams
import Gargantext.Database.Schema.Prelude import Gargantext.Database.Schema.Prelude
import Gargantext.Database.Query.Table.Ngrams import Gargantext.Database.Query.Table.Ngrams
...@@ -180,7 +180,7 @@ querySelectLems = [sql| ...@@ -180,7 +180,7 @@ querySelectLems = [sql|
|] |]
-- | Insert Table -- | Insert Table
createTable_NgramsPostag :: Cmd err [Int] createTable_NgramsPostag :: DBCmd err [Int]
createTable_NgramsPostag = map (\(PGS.Only a) -> a) createTable_NgramsPostag = map (\(PGS.Only a) -> a)
<$> runPGSQuery_ queryCreateTable <$> runPGSQuery_ queryCreateTable
where where
......
...@@ -25,10 +25,8 @@ import Control.Lens (set, view) ...@@ -25,10 +25,8 @@ import Control.Lens (set, view)
import Data.Aeson import Data.Aeson
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
import Data.Text (Text) import Data.Text (Text)
import Database.PostgreSQL.Simple qualified as PGS
import Database.PostgreSQL.Simple.SqlQQ (sql) import Database.PostgreSQL.Simple.SqlQQ (sql)
import Opaleye hiding (FromField)
import Prelude hiding (null, id, map, sum)
import Gargantext.Core import Gargantext.Core
import Gargantext.Core.Types import Gargantext.Core.Types
import Gargantext.Core.Types.Query (Limit, Offset) import Gargantext.Core.Types.Query (Limit, Offset)
...@@ -39,8 +37,8 @@ import Gargantext.Database.Query.Filter (limit', offset') ...@@ -39,8 +37,8 @@ import Gargantext.Database.Query.Filter (limit', offset')
import Gargantext.Database.Query.Table.Node.Error import Gargantext.Database.Query.Table.Node.Error
import Gargantext.Database.Schema.Node import Gargantext.Database.Schema.Node
import Gargantext.Prelude hiding (sum, head) import Gargantext.Prelude hiding (sum, head)
import Opaleye hiding (FromField)
import qualified Database.PostgreSQL.Simple as PGS import Prelude hiding (null, id, map, sum)
queryNodeSearchTable :: Select NodeSearchRead queryNodeSearchTable :: Select NodeSearchRead
......
...@@ -28,7 +28,7 @@ import Database.PostgreSQL.Simple.ToRow (ToRow(..)) ...@@ -28,7 +28,7 @@ import Database.PostgreSQL.Simple.ToRow (ToRow(..))
import Database.PostgreSQL.Simple.Types (Values(..), QualifiedIdentifier(..)) import Database.PostgreSQL.Simple.Types (Values(..), QualifiedIdentifier(..))
import GHC.Generics (Generic) import GHC.Generics (Generic)
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Prelude (Cmd, runPGSQuery, formatPGSQuery, DBCmd) import Gargantext.Database.Prelude (runPGSQuery, formatPGSQuery, DBCmd)
import Gargantext.Prelude import Gargantext.Prelude
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
...@@ -41,12 +41,12 @@ add pId ns = runPGSQuery queryAdd (Only $ Values fields inputData) ...@@ -41,12 +41,12 @@ add pId ns = runPGSQuery queryAdd (Only $ Values fields inputData)
-- | Adds a single document. Useful for debugging purposes, but -- | Adds a single document. Useful for debugging purposes, but
-- not as efficient as adding documents in bulk via 'add'. -- not as efficient as adding documents in bulk via 'add'.
add_one :: CorpusId -> ContextId -> Cmd err [Only Int] add_one :: CorpusId -> ContextId -> DBCmd err [Only Int]
add_one pId ctxId = runPGSQuery queryAdd (Only $ Values fields [InputData pId ctxId]) add_one pId ctxId = runPGSQuery queryAdd (Only $ Values fields [InputData pId ctxId])
where where
fields = map (\t-> QualifiedIdentifier Nothing t) inputSqlTypes fields = map (\t-> QualifiedIdentifier Nothing t) inputSqlTypes
add_debug :: CorpusId -> [ContextId] -> Cmd err ByteString add_debug :: CorpusId -> [ContextId] -> DBCmd err ByteString
add_debug pId ns = formatPGSQuery queryAdd (Only $ Values fields inputData) add_debug pId ns = formatPGSQuery queryAdd (Only $ Values fields inputData)
where where
fields = map (\t-> QualifiedIdentifier Nothing t) inputSqlTypes fields = map (\t-> QualifiedIdentifier Nothing t) inputSqlTypes
......
...@@ -19,7 +19,7 @@ import Database.PostgreSQL.Simple ...@@ -19,7 +19,7 @@ import Database.PostgreSQL.Simple
import Gargantext.Prelude import Gargantext.Prelude
import Gargantext.Core.Types (Name) import Gargantext.Core.Types (Name)
import Gargantext.Database.Prelude import Gargantext.Database.Prelude (DBCmd, runPGSQuery)
import Gargantext.Database.Admin.Types.Node (NodeId, ParentId) import Gargantext.Database.Admin.Types.Node (NodeId, ParentId)
-- import Data.ByteString -- import Data.ByteString
...@@ -39,7 +39,7 @@ unOnly :: Only a -> a ...@@ -39,7 +39,7 @@ unOnly :: Only a -> a
unOnly (Only a) = a unOnly (Only a) = a
-- TODO-ACCESS -- TODO-ACCESS
update :: Update -> Cmd err [Int] update :: Update -> DBCmd err [Int]
update (Rename nId name) = map unOnly <$> runPGSQuery "UPDATE nodes SET name=? where id=? returning id" update (Rename nId name) = map unOnly <$> runPGSQuery "UPDATE nodes SET name=? where id=? returning id"
(DT.take 255 name,nId) (DT.take 255 name,nId)
update (Move nId pId) = map unOnly <$> runPGSQuery "UPDATE nodes SET parent_id= ? where id=? returning id" update (Move nId pId) = map unOnly <$> runPGSQuery "UPDATE nodes SET parent_id= ? where id=? returning id"
......
...@@ -22,7 +22,7 @@ import Gargantext.Prelude ...@@ -22,7 +22,7 @@ import Gargantext.Prelude
import Gargantext.Database.Schema.Node import Gargantext.Database.Schema.Node
import Gargantext.Database.Admin.Types.Hyperdata import Gargantext.Database.Admin.Types.Hyperdata
import Gargantext.Database.Admin.Types.Node import Gargantext.Database.Admin.Types.Node
import Gargantext.Database.Prelude (Cmd, mkCmd, DBCmd) import Gargantext.Database.Prelude (mkCmd, DBCmd)
import Gargantext.Database.Query.Table.Node import Gargantext.Database.Query.Table.Node
import Gargantext.Database.Query.Table.Node.Error import Gargantext.Database.Query.Table.Node.Error
...@@ -49,7 +49,7 @@ updateHyperdataQuery i h = seq h' $ {- trace "updateHyperdataQuery: encoded JSON ...@@ -49,7 +49,7 @@ updateHyperdataQuery i h = seq h' $ {- trace "updateHyperdataQuery: encoded JSON
updateNodesWithType :: ( HasNodeError err updateNodesWithType :: ( HasNodeError err
, HasDBid NodeType , HasDBid NodeType
, HyperdataC a , HyperdataC a
) => NodeType -> proxy a -> (a -> a) -> Cmd err [Int64] ) => NodeType -> proxy a -> (a -> a) -> DBCmd err [Int64]
updateNodesWithType nt p f = do updateNodesWithType nt p f = do
ns <- getNodesWithType nt p ns <- getNodesWithType nt p
mapM (\n -> updateHyperdata (_node_id n) (f $ _node_hyperdata n)) ns mapM (\n -> updateHyperdata (_node_id n) (f $ _node_hyperdata n)) ns
...@@ -61,7 +61,7 @@ updateNodeWithType :: ( HasNodeError err ...@@ -61,7 +61,7 @@ updateNodeWithType :: ( HasNodeError err
-> NodeType -> NodeType
-> proxy a -> proxy a
-> (a -> a) -> (a -> a)
-> Cmd err [Int64] -> DBCmd err [Int64]
updateNodeWithType nId nt p f = do updateNodeWithType nId nt p f = do
ns <- getNodeWithType nId nt p ns <- getNodeWithType nId nt p
mapM (\n -> updateHyperdata (_node_id n) (f $ _node_hyperdata n)) ns mapM (\n -> updateHyperdata (_node_id n) (f $ _node_hyperdata n)) ns
...@@ -71,7 +71,7 @@ updateNodeWithType nId nt p f = do ...@@ -71,7 +71,7 @@ updateNodeWithType nId nt p f = do
updateNodesWithType_ :: ( HasNodeError err updateNodesWithType_ :: ( HasNodeError err
, HyperdataC a , HyperdataC a
, HasDBid NodeType , HasDBid NodeType
) => NodeType -> a -> Cmd err [Int64] ) => NodeType -> a -> DBCmd err [Int64]
updateNodesWithType_ nt h = do updateNodesWithType_ nt h = do
ns <- getNodesIdWithType nt ns <- getNodesIdWithType nt
mapM (\n -> updateHyperdata n h) ns mapM (\n -> updateHyperdata n h) ns
...@@ -17,14 +17,14 @@ import Gargantext.Core ...@@ -17,14 +17,14 @@ import Gargantext.Core
import Gargantext.Core.Types (Name) import Gargantext.Core.Types (Name)
import Gargantext.Database.Admin.Types.Hyperdata (HyperdataUser(..), defaultHyperdataUser) import Gargantext.Database.Admin.Types.Hyperdata (HyperdataUser(..), defaultHyperdataUser)
import Gargantext.Database.Admin.Types.Node (Node, NodeId(..), UserId, NodeType(..), pgNodeId) import Gargantext.Database.Admin.Types.Node (Node, NodeId(..), UserId, NodeType(..), pgNodeId)
import Gargantext.Database.Prelude -- (fromField', Cmd) import Gargantext.Database.Prelude (DBCmd, runOpaQuery)
import Gargantext.Database.Query.Table.Node import Gargantext.Database.Query.Table.Node
import Gargantext.Database.Schema.Node -- (Node(..)) import Gargantext.Database.Schema.Node -- (Node(..))
import Gargantext.Prelude import Gargantext.Prelude
import Opaleye (limit) import Opaleye (limit)
getNodeUser :: NodeId -> Cmd err (Node HyperdataUser) getNodeUser :: NodeId -> DBCmd err (Node HyperdataUser)
getNodeUser nId = do getNodeUser nId = do
fromMaybe (panic $ "Node does not exist: " <> (cs $ show nId)) . headMay fromMaybe (panic $ "Node does not exist: " <> (cs $ show nId)) . headMay
<$> runOpaQuery (limit 1 $ selectNode (pgNodeId nId)) <$> runOpaQuery (limit 1 $ selectNode (pgNodeId nId))
......
...@@ -62,11 +62,9 @@ getCgramsId mapId nt t = case Map.lookup nt mapId of ...@@ -62,11 +62,9 @@ getCgramsId mapId nt t = case Map.lookup nt mapId of
Just mapId' -> Map.lookup t mapId' Just mapId' -> Map.lookup t mapId'
-- insertDb :: ListId -> Map NgramsType [NgramsElement] -> Cmd err [Result]
listInsertDb :: Show a => ListId listInsertDb :: Show a => ListId
-> (ListId -> a -> [NodeNgramsW]) -> (ListId -> a -> [NodeNgramsW])
-> a -> a
-- -> Cmd err [Returning]
-> DBCmd err (Map NgramsType (Map Text Int)) -> DBCmd err (Map NgramsType (Map Text Int))
listInsertDb l f ngs = Map.map Map.fromList listInsertDb l f ngs = Map.map Map.fromList
<$> Map.fromListWith (<>) <$> Map.fromListWith (<>)
......
...@@ -23,7 +23,7 @@ module Gargantext.Database.Query.Table.NodeNodeNgrams ...@@ -23,7 +23,7 @@ module Gargantext.Database.Query.Table.NodeNodeNgrams
where where
import Gargantext.Database.Admin.Types.Node (pgNodeId) import Gargantext.Database.Admin.Types.Node (pgNodeId)
import Gargantext.Database.Prelude (Cmd, mkCmd) import Gargantext.Database.Prelude (DBCmd, mkCmd)
import Gargantext.Database.Schema.Ngrams (pgNgramsTypeId) import Gargantext.Database.Schema.Ngrams (pgNgramsTypeId)
import Gargantext.Database.Schema.NodeNodeNgrams import Gargantext.Database.Schema.NodeNodeNgrams
import Gargantext.Database.Schema.Prelude import Gargantext.Database.Schema.Prelude
...@@ -34,7 +34,7 @@ queryNodeNodeNgramsTable :: Query NodeNodeNgramsRead ...@@ -34,7 +34,7 @@ queryNodeNodeNgramsTable :: Query NodeNodeNgramsRead
queryNodeNodeNgramsTable = selectTable nodeNodeNgramsTable queryNodeNodeNgramsTable = selectTable nodeNodeNgramsTable
-- | Insert utils -- | Insert utils
insertNodeNodeNgrams :: [NodeNodeNgrams] -> Cmd err Int insertNodeNodeNgrams :: [NodeNodeNgrams] -> DBCmd err Int
insertNodeNodeNgrams = insertNodeNodeNgramsW insertNodeNodeNgrams = insertNodeNodeNgramsW
. map (\(NodeNodeNgrams n1 n2 ng nt w) -> . map (\(NodeNodeNgrams n1 n2 ng nt w) ->
NodeNodeNgrams (pgNodeId n1) NodeNodeNgrams (pgNodeId n1)
...@@ -44,7 +44,7 @@ insertNodeNodeNgrams = insertNodeNodeNgramsW ...@@ -44,7 +44,7 @@ insertNodeNodeNgrams = insertNodeNodeNgramsW
(sqlDouble w) (sqlDouble w)
) )
insertNodeNodeNgramsW :: [NodeNodeNgramsWrite] -> Cmd err Int insertNodeNodeNgramsW :: [NodeNodeNgramsWrite] -> DBCmd err Int
insertNodeNodeNgramsW nnnw = insertNodeNodeNgramsW nnnw =
mkCmd $ \c -> fromIntegral <$> runInsert_ c insertNothing mkCmd $ \c -> fromIntegral <$> runInsert_ c insertNothing
where where
......
...@@ -58,7 +58,7 @@ import Gargantext.Core.Types.Individu ...@@ -58,7 +58,7 @@ import Gargantext.Core.Types.Individu
import qualified Gargantext.Prelude.Crypto.Auth as Auth import qualified Gargantext.Prelude.Crypto.Auth as Auth
import Gargantext.Database.Admin.Types.Hyperdata (HyperdataUser(..), hu_pubmed_api_key) import Gargantext.Database.Admin.Types.Hyperdata (HyperdataUser(..), hu_pubmed_api_key)
import Gargantext.Database.Admin.Types.Node (NodeType(NodeUser), Node, NodeId(..), pgNodeId) import Gargantext.Database.Admin.Types.Node (NodeType(NodeUser), Node, NodeId(..), pgNodeId)
import Gargantext.Database.Prelude import Gargantext.Database.Prelude (DBCmd, mkCmd, runOpaQuery)
import Gargantext.Database.Query.Table.Node.UpdateOpaleye (updateNodeWithType) import Gargantext.Database.Query.Table.Node.UpdateOpaleye (updateNodeWithType)
import Gargantext.Database.Schema.Node (NodeRead, node_hyperdata, queryNodeTable, node_id, node_user_id, node_typename) import Gargantext.Database.Schema.Node (NodeRead, node_hyperdata, queryNodeTable, node_id, node_user_id, node_typename)
import Gargantext.Database.Schema.User import Gargantext.Database.Schema.User
...@@ -76,14 +76,14 @@ insertUsers us = mkCmd $ \c -> runInsert c insert ...@@ -76,14 +76,14 @@ insertUsers us = mkCmd $ \c -> runInsert c insert
where where
insert = Insert userTable us rCount Nothing insert = Insert userTable us rCount Nothing
deleteUsers :: [Username] -> Cmd err Int64 deleteUsers :: [Username] -> DBCmd err Int64
deleteUsers us = mkCmd $ \c -> runDelete_ c deleteUsers us = mkCmd $ \c -> runDelete_ c
$ Delete userTable $ Delete userTable
(\user -> in_ (map sqlStrictText us) (user_username user)) (\user -> in_ (map sqlStrictText us) (user_username user))
rCount rCount
-- Updates email or password only (for now) -- Updates email or password only (for now)
updateUserDB :: UserWrite -> Cmd err Int64 updateUserDB :: UserWrite -> DBCmd err Int64
updateUserDB us = mkCmd $ \c -> runUpdate_ c (updateUserQuery us) updateUserDB us = mkCmd $ \c -> runUpdate_ c (updateUserQuery us)
where where
updateUserQuery :: UserWrite -> Update Int64 updateUserQuery :: UserWrite -> Update Int64
...@@ -119,7 +119,7 @@ toUserWrite (NewUser u m (Auth.PasswordHash p)) = ...@@ -119,7 +119,7 @@ toUserWrite (NewUser u m (Auth.PasswordHash p)) =
, user_forgot_password_uuid = Nothing } , user_forgot_password_uuid = Nothing }
------------------------------------------------------------------ ------------------------------------------------------------------
getUsersWith :: Username -> Cmd err [UserLight] getUsersWith :: Username -> DBCmd err [UserLight]
getUsersWith u = map toUserLight <$> runOpaQuery (selectUsersLightWith u) getUsersWith u = map toUserLight <$> runOpaQuery (selectUsersLightWith u)
selectUsersLightWith :: Username -> Select UserRead selectUsersLightWith :: Username -> Select UserRead
...@@ -128,7 +128,7 @@ selectUsersLightWith u = proc () -> do ...@@ -128,7 +128,7 @@ selectUsersLightWith u = proc () -> do
restrict -< user_username row .== sqlStrictText u restrict -< user_username row .== sqlStrictText u
returnA -< row returnA -< row
getUsersWithEmail :: Text -> Cmd err [UserLight] getUsersWithEmail :: Text -> DBCmd err [UserLight]
getUsersWithEmail e = map toUserLight <$> runOpaQuery (selectUsersLightWithEmail e) getUsersWithEmail e = map toUserLight <$> runOpaQuery (selectUsersLightWithEmail e)
selectUsersLightWithEmail :: Text -> Select UserRead selectUsersLightWithEmail :: Text -> Select UserRead
...@@ -137,7 +137,7 @@ selectUsersLightWithEmail e = proc () -> do ...@@ -137,7 +137,7 @@ selectUsersLightWithEmail e = proc () -> do
restrict -< user_email row .== sqlStrictText e restrict -< user_email row .== sqlStrictText e
returnA -< row returnA -< row
getUsersWithForgotPasswordUUID :: UUID.UUID -> Cmd err [UserLight] getUsersWithForgotPasswordUUID :: UUID.UUID -> DBCmd err [UserLight]
getUsersWithForgotPasswordUUID uuid = map toUserLight <$> runOpaQuery (selectUsersLightWithForgotPasswordUUID uuid) getUsersWithForgotPasswordUUID uuid = map toUserLight <$> runOpaQuery (selectUsersLightWithForgotPasswordUUID uuid)
selectUsersLightWithForgotPasswordUUID :: UUID.UUID -> Select UserRead selectUsersLightWithForgotPasswordUUID :: UUID.UUID -> Select UserRead
...@@ -173,7 +173,7 @@ queryUserTable = selectTable userTable ...@@ -173,7 +173,7 @@ queryUserTable = selectTable userTable
---------------------------------------------------------------------- ----------------------------------------------------------------------
-- | Get hyperdata associated with user node. -- | Get hyperdata associated with user node.
getUserHyperdata :: User -> Cmd err [HyperdataUser] getUserHyperdata :: User -> DBCmd err [HyperdataUser]
getUserHyperdata (RootId uId) = do getUserHyperdata (RootId uId) = do
runOpaQuery (selectUserHyperdataWithId uId) runOpaQuery (selectUserHyperdataWithId uId)
where where
...@@ -195,7 +195,7 @@ getUserHyperdata _ = undefined ...@@ -195,7 +195,7 @@ getUserHyperdata _ = undefined
-- | Same as `getUserHyperdata` but returns a `Node` type. -- | Same as `getUserHyperdata` but returns a `Node` type.
getUserNodeHyperdata :: User -> Cmd err [Node HyperdataUser] getUserNodeHyperdata :: User -> DBCmd err [Node HyperdataUser]
getUserNodeHyperdata (RootId uId) = do getUserNodeHyperdata (RootId uId) = do
runOpaQuery (selectUserHyperdataWithId uId) runOpaQuery (selectUserHyperdataWithId uId)
where where
...@@ -215,14 +215,14 @@ getUserNodeHyperdata (UserDBId uId) = do ...@@ -215,14 +215,14 @@ getUserNodeHyperdata (UserDBId uId) = do
returnA -< row returnA -< row
getUserNodeHyperdata _ = undefined getUserNodeHyperdata _ = undefined
getUsersWithHyperdata :: User -> Cmd err [(UserLight, HyperdataUser)] getUsersWithHyperdata :: User -> DBCmd err [(UserLight, HyperdataUser)]
getUsersWithHyperdata i = do getUsersWithHyperdata i = do
u <- getUsersWithId i u <- getUsersWithId i
h <- getUserHyperdata i h <- getUserHyperdata i
-- printDebug "[getUsersWithHyperdata]" (u,h) -- printDebug "[getUsersWithHyperdata]" (u,h)
pure $ zip u h pure $ zip u h
getUsersWithNodeHyperdata :: User -> Cmd err [(UserLight, Node HyperdataUser)] getUsersWithNodeHyperdata :: User -> DBCmd err [(UserLight, Node HyperdataUser)]
getUsersWithNodeHyperdata i = do getUsersWithNodeHyperdata i = do
u <- getUsersWithId i u <- getUsersWithId i
h <- getUserNodeHyperdata i h <- getUserNodeHyperdata i
...@@ -230,7 +230,7 @@ getUsersWithNodeHyperdata i = do ...@@ -230,7 +230,7 @@ getUsersWithNodeHyperdata i = do
pure $ zip u h pure $ zip u h
updateUserEmail :: UserLight -> Cmd err Int64 updateUserEmail :: UserLight -> DBCmd err Int64
updateUserEmail (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery updateUserEmail (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery
where where
updateUserQuery :: Update Int64 updateUserQuery :: Update Int64
...@@ -240,7 +240,7 @@ updateUserEmail (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery ...@@ -240,7 +240,7 @@ updateUserEmail (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery
, uWhere = (\row -> user_id row .== (sqlInt4 userLight_id)) , uWhere = (\row -> user_id row .== (sqlInt4 userLight_id))
, uReturning = rCount } , uReturning = rCount }
updateUserPassword :: UserLight -> Cmd err Int64 updateUserPassword :: UserLight -> DBCmd err Int64
updateUserPassword (UserLight { userLight_password = GargPassword password, .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery updateUserPassword (UserLight { userLight_password = GargPassword password, .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery
where where
updateUserQuery :: Update Int64 updateUserQuery :: Update Int64
...@@ -250,7 +250,7 @@ updateUserPassword (UserLight { userLight_password = GargPassword password, .. } ...@@ -250,7 +250,7 @@ updateUserPassword (UserLight { userLight_password = GargPassword password, .. }
, uWhere = \row -> user_id row .== sqlInt4 userLight_id , uWhere = \row -> user_id row .== sqlInt4 userLight_id
, uReturning = rCount } , uReturning = rCount }
updateUserForgotPasswordUUID :: UserLight -> Cmd err Int64 updateUserForgotPasswordUUID :: UserLight -> DBCmd err Int64
updateUserForgotPasswordUUID (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery updateUserForgotPasswordUUID (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c updateUserQuery
where where
pass = sqlStrictText $ fromMaybe "" userLight_forgot_password_uuid pass = sqlStrictText $ fromMaybe "" userLight_forgot_password_uuid
...@@ -261,7 +261,7 @@ updateUserForgotPasswordUUID (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c upd ...@@ -261,7 +261,7 @@ updateUserForgotPasswordUUID (UserLight { .. }) = mkCmd $ \c -> runUpdate_ c upd
, uWhere = \row -> user_id row .== sqlInt4 userLight_id , uWhere = \row -> user_id row .== sqlInt4 userLight_id
, uReturning = rCount } , uReturning = rCount }
getUserPubmedAPIKey :: User -> Cmd err (Maybe PUBMED.APIKey) getUserPubmedAPIKey :: User -> DBCmd err (Maybe PUBMED.APIKey)
getUserPubmedAPIKey user = do getUserPubmedAPIKey user = do
hs <- getUserHyperdata user hs <- getUserHyperdata user
case hs of case hs of
...@@ -269,7 +269,7 @@ getUserPubmedAPIKey user = do ...@@ -269,7 +269,7 @@ getUserPubmedAPIKey user = do
(x:_) -> pure $ _hu_pubmed_api_key x (x:_) -> pure $ _hu_pubmed_api_key x
updateUserPubmedAPIKey :: (HasDBid NodeType, HasNodeError err) updateUserPubmedAPIKey :: (HasDBid NodeType, HasNodeError err)
=> User -> PUBMED.APIKey -> Cmd err Int64 => User -> PUBMED.APIKey -> DBCmd err Int64
updateUserPubmedAPIKey (RootId uId) apiKey = do updateUserPubmedAPIKey (RootId uId) apiKey = do
_ <- updateNodeWithType uId NodeUser (Proxy :: Proxy HyperdataUser) (\h -> h & hu_pubmed_api_key ?~ apiKey) _ <- updateNodeWithType uId NodeUser (Proxy :: Proxy HyperdataUser) (\h -> h & hu_pubmed_api_key ?~ apiKey)
pure 1 pure 1
...@@ -303,7 +303,7 @@ getUser :: Username -> DBCmd err (Maybe UserLight) ...@@ -303,7 +303,7 @@ getUser :: Username -> DBCmd err (Maybe UserLight)
getUser u = userLightWithUsername u <$> usersLight getUser u = userLightWithUsername u <$> usersLight
---------------------------------------------------------------------- ----------------------------------------------------------------------
insertNewUsers :: [NewUser GargPassword] -> Cmd err Int64 insertNewUsers :: [NewUser GargPassword] -> DBCmd err Int64
insertNewUsers newUsers = do insertNewUsers newUsers = do
users' <- liftBase $ mapM toUserHash newUsers users' <- liftBase $ mapM toUserHash newUsers
insertUsers $ map toUserWrite users' insertUsers $ map toUserWrite users'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment