From 103fa0550c0ab5d7f60b865622eff2988a6eb8b8 Mon Sep 17 00:00:00 2001 From: Jacky Hu Date: Wed, 15 Jun 2016 11:17:39 +0800 Subject: [PATCH] Use a specific name for OpenAPI module --- postgrest.cabal | 2 +- src/PostgREST/App.hs | 6 ++---- src/PostgREST/{ApiSpec.hs => OpenAPI.hs} | 12 ++++++++---- 3 files changed, 11 insertions(+), 9 deletions(-) rename src/PostgREST/{ApiSpec.hs => OpenAPI.hs} (94%) diff --git a/postgrest.cabal b/postgrest.cabal index e6f754ace..f7f77a745 100644 --- a/postgrest.cabal +++ b/postgrest.cabal @@ -128,7 +128,7 @@ library , PostgREST.RangeQuery , PostgREST.ApiRequest , PostgREST.Types - , PostgREST.ApiSpec + , PostgREST.OpenAPI hs-source-dirs: src Test-Suite spec diff --git a/src/PostgREST/App.hs b/src/PostgREST/App.hs index a03afd9ed..7ed46136f 100644 --- a/src/PostgREST/App.hs +++ b/src/PostgREST/App.hs @@ -9,7 +9,6 @@ module PostgREST.App ( import Control.Applicative import Data.Bifunctor (first) import qualified Data.ByteString.Char8 as BS -import qualified Data.ByteString.Lazy as BL import Data.IORef (IORef, readIORef) import Data.List (find, delete) import Data.Maybe (fromMaybe, fromJust, mapMaybe) @@ -61,7 +60,7 @@ import PostgREST.QueryBuilder ( callProc , ResultsWithCount ) import PostgREST.Types -import PostgREST.ApiSpec +import PostgREST.OpenAPI import Prelude @@ -227,8 +226,7 @@ app dbStructure conf apiRequest = pkeys = map pkName $ filter (filterPk tSchema tTable) allPrKeys in (t, cols, pkeys)) - encodeApi :: [(Table, [Column], [Text])] -> BL.ByteString - encodeApi ti = encode $ apiSpec ti host port + encodeApi ti = encodeOpenAPI ti host port host = configHost conf port = toInteger $ configPort conf notFound = responseLBS status404 [] "" diff --git a/src/PostgREST/ApiSpec.hs b/src/PostgREST/OpenAPI.hs similarity index 94% rename from src/PostgREST/ApiSpec.hs rename to src/PostgREST/OpenAPI.hs index 9b3159fae..6d8c3a0e1 100644 --- a/src/PostgREST/ApiSpec.hs +++ b/src/PostgREST/OpenAPI.hs @@ -1,11 +1,12 @@ {-# LANGUAGE OverloadedStrings #-} -module PostgREST.ApiSpec ( - apiSpec +module PostgREST.OpenAPI ( + encodeOpenAPI ) where import Control.Lens import Data.Aeson (decode, encode) +import Data.ByteString.Lazy (ByteString) import Data.HashMap.Strict.InsOrd (InsOrdHashMap, fromList) import Data.String (IsString (..)) import Data.Text (Text, unpack, pack, concat, intercalate) @@ -199,8 +200,8 @@ makeRootPathItem = ("/", p) makePathItems :: [(Table, [Column], [Text])] -> InsOrdHashMap FilePath PathItem makePathItems ti = fromList $ makeRootPathItem : map makePathItem ti -apiSpec :: [(Table, [Column], [Text])] -> String -> Integer -> Swagger -apiSpec ti h p = (mempty :: Swagger) +postgrestSpec:: [(Table, [Column], [Text])] -> String -> Integer -> Swagger +postgrestSpec ti h p = (mempty :: Swagger) & basePath ?~ "/" & schemes ?~ [Http] & info .~ ((mempty :: Info) @@ -212,3 +213,6 @@ apiSpec ti h p = (mempty :: Swagger) & paths .~ makePathItems ti where h' = Just $ Host h (Just (fromInteger p)) + +encodeOpenAPI :: [(Table, [Column], [Text])] -> String -> Integer -> ByteString +encodeOpenAPI ti h p = encode $ postgrestSpec ti h p