Skip to content

Commit

Permalink
server: misc cleanups
Browse files Browse the repository at this point in the history
  • Loading branch information
Antoine Leblanc authored and hasura-bot committed Jun 15, 2021
1 parent 8e1c3df commit a805f4d
Showing 34 changed files with 111 additions and 127 deletions.
3 changes: 3 additions & 0 deletions server/src-lib/Data/Text/Extended.hs
Original file line number Diff line number Diff line change
@@ -38,6 +38,9 @@ instance ToTxt G.Name where

deriving instance ToTxt G.EnumValue

instance ToTxt () where
toTxt = tshow

instance ToTxt Void where
toTxt = absurd

7 changes: 3 additions & 4 deletions server/src-lib/Hasura/Backends/BigQuery/DDL.hs
Original file line number Diff line number Diff line change
@@ -14,15 +14,14 @@ where

import Hasura.Prelude

import qualified Data.Environment as Env
import qualified Data.Environment as Env

import Data.Aeson

import qualified Hasura.Backends.BigQuery.Types as BigQuery
import qualified Hasura.Backends.BigQuery.Types as BigQuery

import Hasura.Backends.BigQuery.DDL.BoolExp
import Hasura.Backends.BigQuery.DDL.Source as M
import Hasura.Backends.BigQuery.Instances.Types ()
import Hasura.Backends.BigQuery.DDL.Source as M
import Hasura.Base.Error
import Hasura.RQL.IR.BoolExp
import Hasura.RQL.Types.Backend
5 changes: 2 additions & 3 deletions server/src-lib/Hasura/Backends/BigQuery/DDL/BoolExp.hs
Original file line number Diff line number Diff line change
@@ -2,10 +2,9 @@ module Hasura.Backends.BigQuery.DDL.BoolExp where

import Hasura.Prelude

import qualified Data.Aeson as J
import qualified Data.HashMap.Strict as Map
import qualified Data.Aeson as J
import qualified Data.HashMap.Strict as Map

import Hasura.Backends.BigQuery.Instances.Types ()
import Hasura.Backends.BigQuery.Types
import Hasura.Base.Error
import Hasura.RQL.IR.BoolExp
9 changes: 4 additions & 5 deletions server/src-lib/Hasura/Backends/BigQuery/DDL/Source.hs
Original file line number Diff line number Diff line change
@@ -9,15 +9,14 @@ where

import Hasura.Prelude

import qualified Data.Environment as Env
import qualified Data.HashMap.Strict as HM
import qualified Data.Text as T
import qualified Data.Environment as Env
import qualified Data.HashMap.Strict as HM
import qualified Data.Text as T

import Control.Concurrent.MVar (newMVar)
import Control.Concurrent.MVar (newMVar)
import Data.Time.Clock.System

import Hasura.Backends.BigQuery.Connection
import Hasura.Backends.BigQuery.Instances.Types ()
import Hasura.Backends.BigQuery.Meta
import Hasura.Backends.BigQuery.Source
import Hasura.Backends.BigQuery.Types
Original file line number Diff line number Diff line change
@@ -11,7 +11,6 @@ import qualified Hasura.Logging as L
import qualified Hasura.Tracing as Tracing

import Hasura.Backends.BigQuery.Instances.Execute ()
import Hasura.Backends.MSSQL.Instances.Execute ()
import Hasura.Base.Error
import Hasura.EncJSON
import Hasura.GraphQL.Execute.Backend
8 changes: 1 addition & 7 deletions server/src-lib/Hasura/Backends/BigQuery/Instances/Types.hs
Original file line number Diff line number Diff line change
@@ -5,25 +5,19 @@ module Hasura.Backends.BigQuery.Instances.Types where
import Hasura.Prelude

import qualified Language.GraphQL.Draft.Syntax as G
import qualified Text.Builder as TB

import Data.Aeson
import Data.Functor.Const
import Hasura.SQL.Types

import qualified Hasura.Backends.BigQuery.Source as BigQuery
import qualified Hasura.Backends.BigQuery.ToQuery as BigQuery (fromExpression, toTextPretty)
import qualified Hasura.Backends.BigQuery.Types as BigQuery

import Hasura.Backends.BigQuery.ToQuery ()
import Hasura.Base.Error
import Hasura.RQL.DDL.Headers ()
import Hasura.RQL.Types.Backend
import Hasura.SQL.Backend


instance ToSQL BigQuery.Expression where
toSQL = TB.text . BigQuery.toTextPretty . BigQuery.fromExpression

instance Backend 'BigQuery where
type SourceConfig 'BigQuery = BigQuery.BigQuerySourceConfig
type SourceConnConfiguration 'BigQuery = BigQuery.BigQueryConnSourceConfig
57 changes: 35 additions & 22 deletions server/src-lib/Hasura/Backends/BigQuery/ToQuery.hs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{-# OPTIONS_GHC -fno-warn-orphans #-}

-- | Convert the simple BigQuery AST to an SQL query, ready to be passed
-- to the odbc package's query/exec functions.

@@ -15,23 +17,25 @@ module Hasura.Backends.BigQuery.ToQuery
, paramName
) where

import Control.Monad.State.Strict
import Data.Bifunctor
import Data.Containers.ListUtils
import Data.Foldable
import Hasura.Prelude hiding (second)

import qualified Data.HashMap.Strict.InsOrd as OMap
import Data.List (intersperse)
import qualified Data.List.NonEmpty as NE
import Data.Maybe
import Data.String
import qualified Data.Text as T
import qualified Data.Text.Lazy as LT
import Data.Text.Lazy.Builder (Builder)
import qualified Data.Text.Lazy.Builder as LT
import Data.Tuple
import qualified Data.Vector as V

import Data.Aeson (ToJSON (..))
import Data.Bifunctor
import Data.Containers.ListUtils
import Data.List (intersperse)
import Data.String
import Data.Text.Lazy.Builder (Builder)
import Data.Tuple

import Hasura.Backends.BigQuery.Types
import Hasura.Prelude hiding (second)


--------------------------------------------------------------------------------
-- Types
@@ -51,6 +55,16 @@ instance IsString Printer where
(<+>) :: Printer -> Printer -> Printer
(<+>) x y = SeqPrinter [x,y]


--------------------------------------------------------------------------------
-- Instances

-- This is a debug instance, only here because it avoids a circular
-- dependency between this module and Types.hs.
instance ToJSON Expression where
toJSON = toJSON . toTextPretty . fromExpression


--------------------------------------------------------------------------------
-- Printer generators

@@ -460,6 +474,7 @@ fromValue = ValuePrinter
parens :: Printer -> Printer
parens x = "(" <+> IndentPrinter 1 x <+> ")"


--------------------------------------------------------------------------------
-- Quick and easy query printer

@@ -475,6 +490,7 @@ toTextPretty = LT.toStrict . LT.toLazyText . toBuilderPretty
toTextFlat :: Printer -> Text
toTextFlat = LT.toStrict . LT.toLazyText . toBuilderFlat


--------------------------------------------------------------------------------
-- Printer ready for consumption

@@ -490,6 +506,7 @@ renderBuilderPretty =
second (OMap.fromList . map swap . OMap.toList) . flip runState mempty .
runBuilderPretty


--------------------------------------------------------------------------------
-- Real printer engines

@@ -511,11 +528,10 @@ runBuilderFlat = go 0
ValuePrinter (ArrayValue x) | V.null x -> pure "[]"
ValuePrinter v -> do
themap <- get
next <- case OMap.lookup v themap of
Just next -> pure next
Nothing -> do next <- gets OMap.size
modify (OMap.insert v next)
pure next
next <- OMap.lookup v themap `onNothing` do
next <- gets OMap.size
modify (OMap.insert v next)
pure next
pure ("@" <> paramName next)
notEmpty = (/= mempty)

@@ -535,13 +551,10 @@ runBuilderPretty = go 0
| V.null x -> pure "[]"
ValuePrinter v -> do
themap <- get
next <-
case OMap.lookup v themap of
Just next -> pure next
Nothing -> do
next <- gets OMap.size
modify (OMap.insert v next)
pure next
next <- OMap.lookup v themap `onNothing` do
next <- gets OMap.size
modify (OMap.insert v next)
pure next
pure ("@" <> paramName next)
indentation n = LT.fromText (T.replicate n " ")
notEmpty = (/= mempty)
25 changes: 6 additions & 19 deletions server/src-lib/Hasura/Backends/BigQuery/Types.hs
Original file line number Diff line number Diff line change
@@ -18,7 +18,6 @@ import qualified Language.GraphQL.Draft.Syntax as G
import Data.Aeson (FromJSON, FromJSONKey, ToJSON, ToJSONKey)
import Data.ByteString (ByteString)
import Data.Coerce
import Data.Hashable.Time ()
import Data.Scientific
import Data.Text.Extended
import Data.Time
@@ -50,7 +49,6 @@ data Select = Select
instance FromJSON Select
instance Hashable Select
instance Cacheable Select
instance ToJSON Select
instance NFData Select

data ArrayAgg = ArrayAgg
@@ -61,7 +59,6 @@ data ArrayAgg = ArrayAgg
instance FromJSON ArrayAgg
instance Hashable ArrayAgg
instance Cacheable ArrayAgg
instance ToJSON ArrayAgg
instance NFData ArrayAgg

data Reselect = Reselect
@@ -71,7 +68,6 @@ data Reselect = Reselect
instance FromJSON Reselect
instance Hashable Reselect
instance Cacheable Reselect
instance ToJSON Reselect
instance NFData Reselect

data OrderBy = OrderBy
@@ -111,7 +107,6 @@ data FieldOrigin
| AggregateOrigin [Aliased Aggregate]
deriving (Eq, Ord, Show, Generic, Data, Lift)
instance FromJSON FieldOrigin
instance ToJSON FieldOrigin
instance Hashable FieldOrigin
instance Cacheable FieldOrigin
instance NFData FieldOrigin
@@ -136,7 +131,6 @@ data Projection
instance FromJSON Projection
instance Hashable Projection
instance Cacheable Projection
instance ToJSON Projection
instance NFData Projection

data WindowFunction =
@@ -161,7 +155,6 @@ data Join = Join
instance FromJSON Join
instance Hashable Join
instance Cacheable Join
instance ToJSON Join
instance NFData Join

data JoinProvenance
@@ -174,7 +167,6 @@ data JoinProvenance
instance FromJSON JoinProvenance
instance Hashable JoinProvenance
instance Cacheable JoinProvenance
instance ToJSON JoinProvenance
instance NFData JoinProvenance

data JoinSource
@@ -186,12 +178,11 @@ data JoinSource
instance FromJSON JoinSource
instance Hashable JoinSource
instance Cacheable JoinSource
instance ToJSON JoinSource
instance NFData JoinSource

newtype Where =
Where [Expression]
deriving (NFData, Eq, Ord, Show, Generic, Data, Lift, FromJSON, ToJSON, Hashable, Cacheable)
deriving (NFData, Eq, Ord, Show, Generic, Data, Lift, FromJSON, Hashable, Cacheable)

instance Monoid Where where
mempty = Where mempty
@@ -266,7 +257,6 @@ data Expression
instance FromJSON Expression
instance Hashable Expression
instance Cacheable Expression
instance ToJSON Expression
instance NFData Expression

data JsonPath
@@ -289,7 +279,6 @@ data Aggregate
instance FromJSON Aggregate
instance Hashable Aggregate
instance Cacheable Aggregate
instance ToJSON Aggregate
instance NFData Aggregate

data Countable fieldname
@@ -310,7 +299,6 @@ data From
instance FromJSON From
instance Hashable From
instance Cacheable From
instance ToJSON From
instance NFData From

data OpenJson = OpenJson
@@ -320,7 +308,6 @@ data OpenJson = OpenJson
instance FromJSON OpenJson
instance Hashable OpenJson
instance Cacheable OpenJson
instance ToJSON OpenJson
instance NFData OpenJson

data JsonFieldSpec
@@ -365,7 +352,7 @@ instance ToJSONKey TableName
instance NFData TableName
instance Arbitrary TableName where arbitrary = genericArbitrary

instance ToTxt TableName where toTxt = T.pack . show
instance ToTxt TableName where toTxt = tshow

data FieldName = FieldName
{ fieldName :: Text
@@ -486,7 +473,7 @@ instance FromJSON Int64 where parseJSON = liberalInt64Parser Int64
instance ToJSON Int64 where toJSON = liberalIntegralPrinter

intToInt64 :: Int -> Int64
intToInt64 = Int64 . T.pack . show
intToInt64 = Int64 . tshow

-- | BigQuery's conception of a fixed precision decimal.
newtype Decimal = Decimal Text
@@ -553,7 +540,7 @@ instance ToJSON ScalarType
instance ToJSONKey ScalarType
instance NFData ScalarType
instance Hashable ScalarType
instance ToTxt ScalarType where toTxt = T.pack . show
instance ToTxt ScalarType where toTxt = tshow

--------------------------------------------------------------------------------
-- Unified table metadata
@@ -703,7 +690,7 @@ liberalInt64Parser fromText json = viaText <|> viaNumber
_ -> fail ("String containing integral number is invalid: " ++ show text)
viaNumber = do
int <- J.parseJSON json
pure (fromText (T.pack (show (int :: Int))))
pure (fromText (tshow (int :: Int)))

-- | Parse either a JSON native double number, or a text string
-- containing something vaguely in scientific notation. In either
@@ -723,7 +710,7 @@ liberalDecimalParser fromText json = viaText <|> viaNumber
-- Converting a scientific to an unbounded number is unsafe, but
-- to a double is bounded and therefore OK. JSON only supports
-- doubles, so that's fine.
pure (fromText (T.pack (show (d :: Double))))
pure (fromText (tshow (d :: Double)))

projectionAlias :: Projection -> Maybe Text
projectionAlias =
11 changes: 5 additions & 6 deletions server/src-lib/Hasura/Backends/MSSQL/DDL/BoolExp.hs
Original file line number Diff line number Diff line change
@@ -2,14 +2,13 @@ module Hasura.Backends.MSSQL.DDL.BoolExp where

import Hasura.Prelude

import qualified Data.Aeson as J
import qualified Data.HashMap.Strict as Map
import qualified Data.Text as T
import qualified Data.Aeson as J
import qualified Data.HashMap.Strict as Map
import qualified Data.Text as T

import Data.Text.Extended (dquote, (<<>))
import Data.Text.Extended (dquote, (<<>))

import Hasura.Backends.MSSQL.Instances.Types ()
import Hasura.Backends.MSSQL.Types hiding (ColumnType)
import Hasura.Backends.MSSQL.Types hiding (ColumnType)
import Hasura.Base.Error
import Hasura.RQL.IR.BoolExp
import Hasura.RQL.Types.Column
1 change: 0 additions & 1 deletion server/src-lib/Hasura/Backends/MSSQL/FromIr.hs
Original file line number Diff line number Diff line change
@@ -20,7 +20,6 @@ import qualified Data.Map.Strict as M
import qualified Data.Text as T
import qualified Database.ODBC.SQLServer as ODBC

--import Control.Monad.Trans.State.Strict as S
import Control.Monad.Validate
import Data.Map.Strict (Map)
import Data.Proxy
Loading

0 comments on commit a805f4d

Please sign in to comment.