graphql-engine/server/src-lib/Hasura/RQL/IR/Update.hs
Brandon Simmons b167120f96 server: add explicit export lists in OSS server and enforce with warning
We'll see if this improves compile times at all, but I think it's worth
doing as at least the most minimal form of module documentation.

This was accomplished by first compiling everything with
-ddump-minimal-imports, and then a bunch of scripting (with help from
ormolu)

**EDIT** it doesn't seem to improve CI compile times but the noise floor is high as it looks like we're not caching library dependencies anymore

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/2730
GitOrigin-RevId: 667eb8de1e0f1af70420cbec90402922b8b84cb4
2021-11-04 16:09:38 +00:00

55 lines
1.6 KiB
Haskell

module Hasura.RQL.IR.Update
( AnnUpd,
AnnUpdG (..),
UpdOpExpG (..),
updateOperatorText,
)
where
import Data.Kind (Type)
import Hasura.Prelude
import Hasura.RQL.IR.BoolExp
import Hasura.RQL.IR.Returning
import Hasura.RQL.Types.Backend
import Hasura.RQL.Types.Column
import Hasura.SQL.Backend
data AnnUpdG (b :: BackendType) (r :: BackendType -> Type) v = AnnUpd
{ uqp1Table :: !(TableName b),
uqp1OpExps :: ![(Column b, UpdOpExpG v)],
uqp1Where :: !(AnnBoolExp b v, AnnBoolExp b v),
uqp1Check :: !(AnnBoolExp b v),
-- we don't prepare the arguments for returning
-- however the session variable can still be
-- converted as desired
uqp1Output :: !(MutationOutputG b r v),
uqp1AllCols :: ![ColumnInfo b]
}
deriving (Functor, Foldable, Traversable)
type AnnUpd b = AnnUpdG b (Const Void) (SQLExpression b)
data UpdOpExpG v
= UpdSet !v
| UpdInc !v
| UpdAppend !v
| UpdPrepend !v
| UpdDeleteKey !v
| UpdDeleteElem !v
| UpdDeleteAtPath ![v]
deriving (Functor, Foldable, Traversable, Generic, Data)
-- NOTE: This function can be improved, because we use
-- the literal values defined below in the 'updateOperators'
-- function in 'Hasura.GraphQL.Schema.Mutation'. It would
-- be nice if we could avoid duplicating the string literal
-- values
updateOperatorText :: UpdOpExpG a -> Text
updateOperatorText (UpdSet _) = "_set"
updateOperatorText (UpdInc _) = "_inc"
updateOperatorText (UpdAppend _) = "_append"
updateOperatorText (UpdPrepend _) = "_prepend"
updateOperatorText (UpdDeleteKey _) = "_delete_key"
updateOperatorText (UpdDeleteElem _) = "_delete_elem"
updateOperatorText (UpdDeleteAtPath _) = "_delete_at_path"