graphql-engine/server/src-lib/Hasura/Backends/MSSQL/SQL/Value.hs
2023-04-24 18:37:33 +00:00

25 lines
946 B
Haskell

-- | MSSQL SQL Value
--
-- Provide a function to translate from a column value to its literal (textual)
-- value specific to MSSQL. Used in the 'BackendExecute' instance.
module Hasura.Backends.MSSQL.SQL.Value (txtEncodedColVal) where
import Data.Text.Encoding (decodeUtf8)
import Data.Text.Extended
import Database.ODBC.SQLServer qualified as ODBC
import Hasura.GraphQL.Execute.Subscription.Plan ()
import Hasura.Prelude
import Hasura.RQL.Types.BackendType
import Hasura.RQL.Types.Column qualified as RQL
import Hasura.RQL.Types.Metadata.Instances ()
import Hasura.SQL.Value (TxtEncodedVal (..))
txtEncodedVal :: ODBC.Value -> TxtEncodedVal
txtEncodedVal ODBC.NullValue = TENull
txtEncodedVal (ODBC.ByteStringValue b) = TELit $ decodeUtf8 b
txtEncodedVal (ODBC.TextValue t) = TELit t
txtEncodedVal val = TELit $ toTxt $ ODBC.toSql val
txtEncodedColVal :: RQL.ColumnValue 'MSSQL -> TxtEncodedVal
txtEncodedColVal = txtEncodedVal . RQL.cvValue