diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index 79d9662e8..f421f0582 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -1,65 +1,65 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} ---module PostgREST.App where +{-# LANGUAGE TupleSections #-} module PostgREST.App ( handleRequest ) where import Control.Applicative -import Control.Arrow ((***)) -import Control.Monad (join) -import Data.Bifunctor (first) -import Data.List (find, sortBy, delete) -import Data.Maybe (isJust, fromMaybe, fromJust, mapMaybe) -import Data.Ord (comparing) -import Data.Ranged.Ranges (emptyRange) -import Data.String.Conversions (cs) -import Data.Text (Text, replace, strip) -import Data.Tree +import Control.Arrow ((***)) +import Control.Monad (join) +import Data.Bifunctor (first) +import Data.List (delete, find, sortBy) +import Data.Maybe (fromJust, fromMaybe, + isJust, mapMaybe) +import Data.Ord (comparing) +import Data.Ranged.Ranges (emptyRange) +import Data.String.Conversions (cs) +import Data.Text (Text, replace, strip) import Data.Time.Clock.POSIX (getPOSIXTime) +import Data.Tree import Text.Parsec.Error -import Text.ParserCombinators.Parsec (parse) +import Text.ParserCombinators.Parsec (parse) -import Network.HTTP.Base (urlEncodeVars) +import Network.HTTP.Base (urlEncodeVars) import Network.HTTP.Types.Header import Network.HTTP.Types.Status -import Network.HTTP.Types.URI (parseSimpleQuery) +import Network.HTTP.Types.URI (parseSimpleQuery) import Network.Wai import Network.Wai.Middleware.RequestLogger (logStdout) import qualified Hasql.Pool as P import Data.Aeson -import Data.Aeson.Types (emptyArray) +import Data.Aeson.Types (emptyArray) import Data.Monoid -import qualified Data.Vector as V -import qualified Hasql.Transaction as H +import qualified Data.Vector as V +import qualified Hasql.Transaction as H import qualified Hasql.Transaction as HT -import PostgREST.Error (pgErrResponse, errResponse) -import PostgREST.Middleware -import PostgREST.Config (AppConfig (..)) -import PostgREST.Parsers +import PostgREST.ApiRequest (Action (..), + ApiRequest (..), + ContentType (..), PreferRepresentation (..), + Target (..), + userApiRequest) +import PostgREST.Auth (tokenJWT) +import PostgREST.Config (AppConfig (..)) import PostgREST.DbStructure +import PostgREST.Error (errResponse, + pgErrResponse) +import PostgREST.Middleware +import PostgREST.Parsers import PostgREST.RangeQuery -import PostgREST.ApiRequest (ApiRequest(..), ContentType(..) - , Action(..), Target(..) - , PreferRepresentation (..) - , userApiRequest) import PostgREST.Types -import PostgREST.Auth (tokenJWT) -import PostgREST.QueryBuilder ( callProc - , addJoinConditions - , sourceCTEName - , requestToQuery - , requestToCountQuery - , addRelations - , createReadStatement - , createWriteStatement - , ResultsWithCount - ) +import PostgREST.QueryBuilder (ResultsWithCount, + addJoinConditions, + addRelations, callProc, + createReadStatement, + createWriteStatement, + requestToCountQuery, + requestToQuery, + sourceCTEName) import Prelude diff --git a/src/PostgREST/Auth.hs b/src/PostgREST/Auth.hs index 6a79a88cd..a62ef2b72 100644 --- a/src/PostgREST/Auth.hs +++ b/src/PostgREST/Auth.hs @@ -19,18 +19,18 @@ module PostgREST.Auth ( ) where import Control.Monad (join) -import Data.Aeson (Value (..), Object) -import Data.Aeson.Types (emptyObject, emptyArray) +import Data.Aeson (Object, Value (..)) +import Data.Aeson.Types (emptyArray, emptyObject) import qualified Data.ByteString as BS -import Data.Vector as V (null, head) +import qualified Data.HashMap.Lazy as H import Data.Map as M (fromList, toList) import Data.Monoid ((<>)) import Data.String.Conversions (cs) import Data.Text (Text) import Data.Time.Clock (NominalDiffTime) -import PostgREST.QueryBuilder (pgFmtLit, pgFmtIdent, unquoted) +import Data.Vector as V (head, null) +import PostgREST.QueryBuilder (pgFmtIdent, pgFmtLit, unquoted) import qualified Web.JWT as JWT -import qualified Data.HashMap.Lazy as H {-| Receives a map of JWT claims and returns a list diff --git a/src/PostgREST/Config.hs b/src/PostgREST/Config.hs index 5cddcec12..1f317c1bb 100644 --- a/src/PostgREST/Config.hs +++ b/src/PostgREST/Config.hs @@ -30,9 +30,9 @@ import Network.Wai import Network.Wai.Middleware.Cors (CorsResourcePolicy (..)) import Options.Applicative import Paths_postgrest (version) +import Prelude import Safe (readMay) import Web.JWT (Secret, secret) -import Prelude -- | Data type to store all command line options data AppConfig = AppConfig { diff --git a/src/PostgREST/DbStructure.hs b/src/PostgREST/DbStructure.hs index 1fd806be0..3e1d09523 100644 --- a/src/PostgREST/DbStructure.hs +++ b/src/PostgREST/DbStructure.hs @@ -10,23 +10,25 @@ module PostgREST.DbStructure ( , doesProcReturnJWT ) where -import qualified Hasql.Query as H -import qualified Hasql.Encoders as HE -import qualified Hasql.Decoders as HD +import qualified Hasql.Decoders as HD +import qualified Hasql.Encoders as HE +import qualified Hasql.Query as H import Control.Applicative -import Control.Monad (join, replicateM) -import Data.Functor.Contravariant (contramap) -import Text.InterpolatedString.Perl6 (q) -import Data.List (elemIndex, find, subsequences, sort, transpose) -import Data.Maybe (fromMaybe, fromJust, isJust, mapMaybe, listToMaybe) +import Control.Monad (join, replicateM) +import Data.Functor.Contravariant (contramap) +import Data.List (elemIndex, find, sort, + subsequences, transpose) +import Data.Maybe (fromJust, fromMaybe, isJust, + listToMaybe, mapMaybe) import Data.Monoid -import Data.Text (Text, split) -import qualified Hasql.Session as H +import Data.Text (Text, split) +import qualified Hasql.Session as H import PostgREST.Types +import Text.InterpolatedString.Perl6 (q) -import GHC.Exts (groupWith) -import Data.Int (Int32) +import Data.Int (Int32) +import GHC.Exts (groupWith) import Prelude getDbStructure :: Schema -> H.Session DbStructure diff --git a/src/PostgREST/Error.hs b/src/PostgREST/Error.hs index e7893aa0b..c29e9b068 100644 --- a/src/PostgREST/Error.hs +++ b/src/PostgREST/Error.hs @@ -12,8 +12,8 @@ import Data.Monoid ((<>)) import Data.String.Conversions (cs) import Data.Text (Text) import qualified Data.Text as T -import qualified Hasql.Session as H import qualified Hasql.Pool as P +import qualified Hasql.Session as H import Network.HTTP.Types.Header import qualified Network.HTTP.Types.Status as HT import Network.Wai (Response, responseLBS) diff --git a/src/PostgREST/Main.hs b/src/PostgREST/Main.hs index e8240a8ee..dab41205c 100644 --- a/src/PostgREST/Main.hs +++ b/src/PostgREST/Main.hs @@ -3,32 +3,29 @@ module Main where -import PostgREST.App (handleRequest) -import PostgREST.Config (AppConfig (..), - minimumPgVersion, - prettyVersion, - readOptions) +import PostgREST.App (handleRequest) +import PostgREST.Config (AppConfig (..), minimumPgVersion, + prettyVersion, readOptions) import PostgREST.DbStructure import Control.Monad -import Data.Monoid ((<>)) -import Data.String.Conversions (cs) +import Data.Monoid ((<>)) +import Data.String.Conversions (cs) -import qualified Hasql.Query as H -import qualified Hasql.Session as H -import qualified Hasql.Decoders as HD -import qualified Hasql.Encoders as HE -import qualified Hasql.Pool as P +import qualified Hasql.Decoders as HD +import qualified Hasql.Encoders as HE +import qualified Hasql.Pool as P +import qualified Hasql.Query as H +import qualified Hasql.Session as H import Network.Wai.Handler.Warp -import System.IO (BufferMode (..), - hSetBuffering, stderr, - stdin, stdout) -import Web.JWT (secret) +import System.IO (BufferMode (..), hSetBuffering, + stderr, stdin, stdout) +import Web.JWT (secret) #ifndef mingw32_HOST_OS +import Control.Concurrent (myThreadId) +import Control.Exception.Base (AsyncException (..), throwTo) import System.Posix.Signals -import Control.Concurrent (myThreadId) -import Control.Exception.Base (throwTo, AsyncException(..)) #endif isServerVersionSupported :: H.Session Bool diff --git a/src/PostgREST/Middleware.hs b/src/PostgREST/Middleware.hs index e68ddbc6f..c932a80e3 100644 --- a/src/PostgREST/Middleware.hs +++ b/src/PostgREST/Middleware.hs @@ -4,27 +4,27 @@ module PostgREST.Middleware where import Data.Maybe (fromMaybe) -import Data.Text import Data.String.Conversions (cs) +import Data.Text import Data.Time.Clock (NominalDiffTime) import qualified Hasql.Transaction as H import Network.HTTP.Types.Header (hAccept, hAuthorization) -import Network.HTTP.Types.Status (status415, status400) -import Network.Wai (Application, Request (..), Response, - requestHeaders) +import Network.HTTP.Types.Status (status400, status415) +import Network.Wai (Application, Request (..), + Response, requestHeaders) import Network.Wai.Middleware.Cors (cors) import Network.Wai.Middleware.Gzip (def, gzip) import Network.Wai.Middleware.Static (only, staticPolicy) -import PostgREST.ApiRequest (pickContentType) -import PostgREST.Auth (setRole, jwtClaims, claimsToSQL) +import PostgREST.ApiRequest (pickContentType) +import PostgREST.Auth (claimsToSQL, jwtClaims, setRole) import PostgREST.Config (AppConfig (..), corsPolicy) import PostgREST.Error (errResponse) -import Prelude hiding(concat) +import Prelude hiding (concat) -import qualified Data.Map.Lazy as M +import qualified Data.Map.Lazy as M runWithClaims :: AppConfig -> NominalDiffTime -> (Request -> H.Transaction Response) -> diff --git a/src/PostgREST/Parsers.hs b/src/PostgREST/Parsers.hs index 437369031..391e38647 100644 --- a/src/PostgREST/Parsers.hs +++ b/src/PostgREST/Parsers.hs @@ -3,14 +3,14 @@ module PostgREST.Parsers -- ) where -import Control.Applicative hiding ((<$>)) +import Control.Applicative hiding ((<$>)) import Data.Monoid import Data.String.Conversions (cs) import Data.Text (Text) import Data.Tree +import PostgREST.QueryBuilder (operators) import PostgREST.Types import Text.ParserCombinators.Parsec hiding (many, (<|>)) -import PostgREST.QueryBuilder (operators) pRequestSelect :: Text -> Parser ReadRequest pRequestSelect rootNodeName = do diff --git a/src/PostgREST/Types.hs b/src/PostgREST/Types.hs index 4b5473f8e..2d2660516 100644 --- a/src/PostgREST/Types.hs +++ b/src/PostgREST/Types.hs @@ -1,16 +1,16 @@ module PostgREST.Types where -import Data.Text -import Data.Tree -import qualified Data.ByteString.Lazy as BL +import Data.Aeson import qualified Data.ByteString as BS +import qualified Data.ByteString.Lazy as BL +import Data.Int (Int32) +import Data.Text +import Data.Tree import qualified Data.Vector as V -import Data.Aeson -import Data.Int (Int32) data DbStructure = DbStructure { - dbTables :: [Table] -, dbColumns :: [Column] -, dbRelations :: [Relation] + dbTables :: [Table] +, dbColumns :: [Column] +, dbRelations :: [Relation] , dbPrimaryKeys :: [PrimaryKey] } deriving (Show, Eq) diff --git a/test/Main.hs b/test/Main.hs index 05316e250..1efc55ce4 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -1,13 +1,13 @@ module Main where -import Test.Hspec -import SpecHelper +import SpecHelper +import Test.Hspec -import qualified Hasql.Pool as P +import qualified Hasql.Pool as P -import PostgREST.DbStructure (getDbStructure) -import PostgREST.App (handleRequest) -import Data.String.Conversions (cs) +import Data.String.Conversions (cs) +import PostgREST.App (handleRequest) +import PostgREST.DbStructure (getDbStructure) import qualified Feature.AuthSpec import qualified Feature.ConcurrentSpec