-- | This module provides constants that are either:
--
-- * Simply in common user
-- * Define names that that multiple pieces of code reference.
module Hasura.Backends.MSSQL.FromIr.Constants
  ( trueExpression,
    nullExpression,
    emptyArrayExpression,
    jsonFieldName,
    aggSubselectName,
    existsFieldName,
    aggFieldName,
    tempTableNameInserted,
    tempTableNameValues,
    tempTableNameDeleted,
    tempTableNameUpdated,
  )
where

import Database.ODBC.SQLServer qualified as ODBC
import Hasura.Backends.MSSQL.Instances.Types ()
import Hasura.Backends.MSSQL.Types.Internal as TSQL
import Hasura.Prelude

trueExpression :: Expression
trueExpression :: Expression
trueExpression = Value -> Expression
ValueExpression (Value -> Expression) -> Value -> Expression
forall a b. (a -> b) -> a -> b
$ Bool -> Value
ODBC.BoolValue Bool
True

nullExpression :: Expression
nullExpression :: Expression
nullExpression = Value -> Expression
ValueExpression (Value -> Expression) -> Value -> Expression
forall a b. (a -> b) -> a -> b
$ Text -> Value
ODBC.TextValue Text
"null"

emptyArrayExpression :: Expression
emptyArrayExpression :: Expression
emptyArrayExpression = Value -> Expression
ValueExpression (Value -> Expression) -> Value -> Expression
forall a b. (a -> b) -> a -> b
$ Text -> Value
ODBC.TextValue Text
"[]"

jsonFieldName :: Text
jsonFieldName :: Text
jsonFieldName = Text
"json"

aggSubselectName :: Text
aggSubselectName :: Text
aggSubselectName = Text
"agg_sub"

existsFieldName :: Text
existsFieldName :: Text
existsFieldName = Text
"exists_placeholder"

aggFieldName :: Text
aggFieldName :: Text
aggFieldName = Text
"agg"

tempTableNameInserted :: TempTableName
tempTableNameInserted :: TempTableName
tempTableNameInserted = Text -> TempTableName
TempTableName Text
"inserted"

tempTableNameValues :: TempTableName
tempTableNameValues :: TempTableName
tempTableNameValues = Text -> TempTableName
TempTableName Text
"values"

tempTableNameDeleted :: TempTableName
tempTableNameDeleted :: TempTableName
tempTableNameDeleted = Text -> TempTableName
TempTableName Text
"deleted"

tempTableNameUpdated :: TempTableName
tempTableNameUpdated :: TempTableName
tempTableNameUpdated = Text -> TempTableName
TempTableName Text
"updated"