From 250e5284cd7f956c1946b907f5c31467aaa0846a Mon Sep 17 00:00:00 2001 From: Fabrizio Ferrai Date: Sun, 5 May 2019 01:05:15 +0300 Subject: [PATCH] [haskell-servant] Add some missing types to the generated modules (#2675) * Add some missing types to the generated modules * Run bin/openapi3 script --- .../languages/HaskellServantCodegen.java | 3 +- .../resources/haskell-servant/API.mustache | 2 ++ .../resources/haskell-servant/Types.mustache | 1 + .../.openapi-generator/VERSION | 2 +- .../lib/OpenAPIPetstore/API.hs | 6 ++-- .../lib/OpenAPIPetstore/Types.hs | 35 +++++++++++++++++++ 6 files changed, 44 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java index 8b0cfbc7cb37..b3692878eec6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java @@ -301,7 +301,6 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf */ private void setGenerateToSchema(CodegenModel model) { for (CodegenProperty var : model.vars) { - LOGGER.warn(var.dataType); if (var.dataType.contentEquals("Value") || var.dataType.contains(" Value")) { additionalProperties.put("generateToSchema", false); } @@ -349,7 +348,7 @@ public class HaskellServantCodegen extends DefaultCodegen implements CodegenConf @Override public String getSchemaType(Schema p) { String schemaType = super.getSchemaType(p); - LOGGER.debug("debugging swager type: " + p.getType() + ", " + p.getFormat() + " => " + schemaType); + LOGGER.debug("debugging OpenAPI type: " + p.getType() + ", " + p.getFormat() + " => " + schemaType); String type = null; if (typeMapping.containsKey(schemaType)) { type = typeMapping.get(schemaType); diff --git a/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache b/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache index f6271e47a7dd..4d1c43629786 100644 --- a/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache +++ b/modules/openapi-generator/src/main/resources/haskell-servant/API.mustache @@ -41,8 +41,10 @@ import Data.Function ((&)) import qualified Data.Map as Map import Data.Monoid ((<>)) import Data.Proxy (Proxy (..)) +import Data.Set (Set) import Data.Text (Text) import qualified Data.Text as T +import Data.Time import Data.UUID (UUID) import GHC.Exts (IsString (..)) import GHC.Generics (Generic) diff --git a/modules/openapi-generator/src/main/resources/haskell-servant/Types.mustache b/modules/openapi-generator/src/main/resources/haskell-servant/Types.mustache index 22682a1e654d..b2ff14c3ee81 100644 --- a/modules/openapi-generator/src/main/resources/haskell-servant/Types.mustache +++ b/modules/openapi-generator/src/main/resources/haskell-servant/Types.mustache @@ -17,6 +17,7 @@ import Data.List (stripPrefix) import Data.Maybe (fromMaybe) import Data.Aeson (Value, FromJSON(..), ToJSON(..), genericToJSON, genericParseJSON) import Data.Aeson.Types (Options(..), defaultOptions) +import Data.Set (Set) import Data.Text (Text) import Data.Time import Data.Swagger (ToSchema, declareNamedSchema) diff --git a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION index afa636560641..aa48dc667a1c 100644 --- a/samples/server/petstore/haskell-servant/.openapi-generator/VERSION +++ b/samples/server/petstore/haskell-servant/.openapi-generator/VERSION @@ -1 +1 @@ -4.0.0-SNAPSHOT \ No newline at end of file +4.0.0-beta3 \ No newline at end of file diff --git a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs index 3a78eb9ded14..3b812a3a9909 100644 --- a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs +++ b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/API.hs @@ -41,8 +41,10 @@ import Data.Function ((&)) import qualified Data.Map as Map import Data.Monoid ((<>)) import Data.Proxy (Proxy (..)) +import Data.Set (Set) import Data.Text (Text) import qualified Data.Text as T +import Data.Time import Data.UUID (UUID) import GHC.Exts (IsString (..)) import GHC.Generics (Generic) @@ -135,7 +137,7 @@ type OpenAPIPetstoreAPI = "pet" :> ReqBody '[JSON] Pet :> Verb 'POST 200 '[JSON] () -- 'addPet' route :<|> "pet" :> Capture "petId" Integer :> Header "api_key" Text :> Verb 'DELETE 200 '[JSON] () -- 'deletePet' route :<|> "pet" :> "findByStatus" :> QueryParam "status" (QueryList 'CommaSeparated (Text)) :> Verb 'GET 200 '[JSON] [Pet] -- 'findPetsByStatus' route - :<|> "pet" :> "findByTags" :> QueryParam "tags" (QueryList 'CommaSeparated (Text)) :> Verb 'GET 200 '[JSON] [Pet] -- 'findPetsByTags' route + :<|> "pet" :> "findByTags" :> QueryParam "tags" (QueryList 'CommaSeparated (Text)) :> QueryParam "maxCount" Int :> Verb 'GET 200 '[JSON] [Pet] -- 'findPetsByTags' route :<|> "pet" :> Capture "petId" Integer :> Verb 'GET 200 '[JSON] Pet -- 'getPetById' route :<|> "pet" :> ReqBody '[JSON] Pet :> Verb 'PUT 200 '[JSON] () -- 'updatePet' route :<|> "pet" :> Capture "petId" Integer :> ReqBody '[FormUrlEncoded] FormUpdatePetWithForm :> Verb 'POST 200 '[JSON] () -- 'updatePetWithForm' route @@ -174,7 +176,7 @@ data OpenAPIPetstoreBackend m = OpenAPIPetstoreBackend { addPet :: Pet -> m (){- ^ -} , deletePet :: Integer -> Maybe Text -> m (){- ^ -} , findPetsByStatus :: Maybe [Text] -> m [Pet]{- ^ Multiple status values can be provided with comma separated strings -} - , findPetsByTags :: Maybe [Text] -> m [Pet]{- ^ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. -} + , findPetsByTags :: Maybe [Text] -> Maybe Int -> m [Pet]{- ^ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. -} , getPetById :: Integer -> m Pet{- ^ Returns a single pet -} , updatePet :: Pet -> m (){- ^ -} , updatePetWithForm :: Integer -> FormUpdatePetWithForm -> m (){- ^ -} diff --git a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs index fd1b92aab967..2e1c28bd4ece 100644 --- a/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs +++ b/samples/server/petstore/haskell-servant/lib/OpenAPIPetstore/Types.hs @@ -6,6 +6,8 @@ module OpenAPIPetstore.Types ( ApiResponse (..), Category (..), + InlineObject (..), + InlineObject1 (..), Order (..), Pet (..), Tag (..), @@ -18,6 +20,7 @@ import Data.List (stripPrefix) import Data.Maybe (fromMaybe) import Data.Aeson (Value, FromJSON(..), ToJSON(..), genericToJSON, genericParseJSON) import Data.Aeson.Types (Options(..), defaultOptions) +import Data.Set (Set) import Data.Text (Text) import Data.Time import Data.Swagger (ToSchema, declareNamedSchema) @@ -62,6 +65,38 @@ instance ToSchema Category where $ removeFieldLabelPrefix False "category" +-- | +data InlineObject = InlineObject + { inlineObjectName :: Maybe Text -- ^ Updated name of the pet + , inlineObjectStatus :: Maybe Text -- ^ Updated status of the pet + } deriving (Show, Eq, Generic, Data) + +instance FromJSON InlineObject where + parseJSON = genericParseJSON (removeFieldLabelPrefix True "inlineObject") +instance ToJSON InlineObject where + toJSON = genericToJSON (removeFieldLabelPrefix False "inlineObject") +instance ToSchema InlineObject where + declareNamedSchema = Swagger.genericDeclareNamedSchema + $ Swagger.fromAesonOptions + $ removeFieldLabelPrefix False "inlineObject" + + +-- | +data InlineObject1 = InlineObject1 + { inlineObject1AdditionalMetadata :: Maybe Text -- ^ Additional data to pass to server + , inlineObject1File :: Maybe FilePath -- ^ file to upload + } deriving (Show, Eq, Generic, Data) + +instance FromJSON InlineObject1 where + parseJSON = genericParseJSON (removeFieldLabelPrefix True "inlineObject1") +instance ToJSON InlineObject1 where + toJSON = genericToJSON (removeFieldLabelPrefix False "inlineObject1") +instance ToSchema InlineObject1 where + declareNamedSchema = Swagger.genericDeclareNamedSchema + $ Swagger.fromAesonOptions + $ removeFieldLabelPrefix False "inlineObject1" + + -- | An order for a pets from the pet store data Order = Order { orderId :: Maybe Integer -- ^