graphql-engine/server/src-lib/Hasura/Backends/MSSQL/FromIr/Delete.hs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

35 lines
1.4 KiB
Haskell
Raw Normal View History

-- | This module defines the translation function for delete mutations.
module Hasura.Backends.MSSQL.FromIr.Delete (fromDelete) where
import Hasura.Backends.MSSQL.FromIr (FromIr, NameTemplate (..), generateAlias)
import Hasura.Backends.MSSQL.FromIr.Constants (tempTableNameDeleted)
import Hasura.Backends.MSSQL.FromIr.Expression (fromGBoolExp)
import Hasura.Backends.MSSQL.Instances.Types ()
import Hasura.Backends.MSSQL.Types.Internal as TSQL
import Hasura.Prelude
import Hasura.RQL.IR qualified as IR
import Hasura.RQL.Types.Column qualified as IR
import Hasura.SQL.Backend
fromDelete :: IR.AnnDel 'MSSQL -> FromIr Delete
fromDelete (IR.AnnDel table (permFilter, whereClause) _ allColumns) = do
tableAlias <- generateAlias (TableTemplate (tableName table))
runReaderT
( do
permissionsFilter <- fromGBoolExp permFilter
whereExpression <- fromGBoolExp whereClause
let columnNames = map IR.ciColumn allColumns
pure
Delete
{ deleteTable =
Aliased
{ aliasedAlias = tableAlias,
aliasedThing = table
},
deleteOutput = Output Deleted (map OutputColumn columnNames),
deleteTempTable = TempTable tempTableNameDeleted columnNames,
deleteWhere = Where [permissionsFilter, whereExpression]
}
)
(EntityAlias tableAlias)