Note which rpc params are optional

This commit is contained in:
Joe Nelson
2016-09-11 15:15:38 -07:00
parent 466090c79b
commit 25c2cd1f2d
3 changed files with 22 additions and 17 deletions
+6 -5
View File
@@ -105,14 +105,15 @@ accessibleProcs =
addName :: ProcDescription -> (Text, ProcDescription)
addName pd = (pdName pd, pd)
parseArgs :: Text -> [(PgArgName, PgArgType)]
parseArgs = mapMaybe list2pair
parseArgs :: Text -> [PgArg]
parseArgs = mapMaybe toks2arg
. map (split (==' ') . strip)
. split (==',')
list2pair :: [a] -> Maybe (a,a)
list2pair (x:y:_) = Just (x,y)
list2pair _ = Nothing
toks2arg :: [Text] -> Maybe PgArg
toks2arg (x:y:"DEFAULT":_) = Just (PgArg x y False)
toks2arg (x:y:_) = Just (PgArg x y True)
toks2arg _ = Nothing
sql = [q|
SELECT p.proname as "proc_name",
+10 -9
View File
@@ -23,9 +23,8 @@ import Data.Swagger
import PostgREST.ApiRequest (ContentType(..), toHeader)
import PostgREST.Config (prettyVersion)
import PostgREST.QueryBuilder (operators)
import PostgREST.Types (Table(..), Column(..),
Proxy(..), ProcDescription(..),
PgArgName, PgArgType)
import PostgREST.Types (Table(..), Column(..), PgArg(..),
Proxy(..), ProcDescription(..))
makeMimeList :: [ContentType] -> MimeList
makeMimeList cs = MimeList $ map (fromString . toS . toHeader) cs
@@ -55,13 +54,15 @@ makeProperty c = (colName c, Inline u)
u = t & format ?~ colType c
makeProcDef :: ProcDescription -> (Text, Schema)
makeProcDef pd =
("(rpc) " <> pdName pd, (mempty :: Schema)
& type_ .~ SwaggerObject
& properties .~ (fromList $ map makeProcProperty (pdArgs pd)))
makeProcDef pd = ("(rpc) " <> pdName pd, s)
where
s = (mempty :: Schema)
& type_ .~ SwaggerObject
& properties .~ (fromList $ map makeProcProperty (pdArgs pd))
& required .~ (map pgaName $ filter pgaReq (pdArgs pd))
makeProcProperty :: (PgArgName, PgArgType) -> (Text, Referenced Schema)
makeProcProperty (n, t) = (n, Inline s)
makeProcProperty :: PgArg -> (Text, Referenced Schema)
makeProcProperty (PgArg n t _) = (n, Inline s)
where
s = (mempty :: Schema)
& type_ .~ toSwaggerType t
+6 -3
View File
@@ -16,12 +16,15 @@ data DbStructure = DbStructure {
, dbProcs :: [(Text,ProcDescription)]
} deriving (Show, Eq)
type PgArgName = Text
type PgArgType = Text
data PgArg = PgArg {
pgaName :: Text
, pgaType :: Text
, pgaReq :: Bool
} deriving (Show, Eq)
data ProcDescription = ProcDescription {
pdName :: Text
, pdArgs :: [(PgArgName, PgArgType)]
, pdArgs :: [PgArg]
, pdReturnType :: Text
} deriving (Show, Eq)