graphql-engine/server/src-lib/Hasura/Prelude.hs
Rakesh Emmadi 7b5bbb758a fix excessive memory consumption with bulk queries (#1972)
Use 'Strict' State monad instead of 'Lazy' to avoid unevaluated memory thunks
2019-04-09 21:41:06 +05:30

48 lines
2.1 KiB
Haskell

module Hasura.Prelude
( module M
, onNothing
, onJust
, onLeft
) where
import Control.Applicative as M ((<|>))
import Control.Monad as M (void, when)
import Control.Monad.Base as M
import Control.Monad.Except as M
import Control.Monad.Fail as M (MonadFail)
import Control.Monad.Identity as M
import Control.Monad.Reader as M
import Control.Monad.State.Strict as M
import Data.Bool as M (bool)
import Data.Either as M (lefts, partitionEithers,
rights)
import Data.Foldable as M (foldrM, toList)
import Data.Hashable as M (Hashable)
import Data.List as M (find, foldl', group,
intercalate, intersect,
lookup, sort, sortBy, sortOn,
union, unionBy, (\\))
import Data.Maybe as M (catMaybes, fromMaybe, isJust,
isNothing, listToMaybe,
mapMaybe, maybeToList)
import Data.Ord as M (comparing)
import Data.Semigroup as M (Semigroup (..))
import Data.String as M (IsString)
import Data.Text as M (Text)
import Data.Word as M (Word64)
import GHC.Generics as M (Generic)
import Prelude as M hiding (fail, init, lookup)
import Text.Read as M (readEither, readMaybe)
onNothing :: (Monad m) => Maybe a -> m a -> m a
onNothing m act = maybe act return m
onJust :: (Monad m) => Maybe a -> (a -> m ()) -> m ()
onJust m action = maybe (return ()) action m
onLeft :: (Monad m) => Either e a -> (e -> m a) -> m a
onLeft e f = either f return e