@@ -39,17 +39,23 @@ where
39import Control.Lens
39import Control.Lens
40import qualified Data.Aeson.Types as A
40import qualified Data.Aeson.Types as A
41import Data.OpenApi
41import Data.OpenApi
42−import Data.OpenApi.Internal.ParamSchema
43import Data.OpenApi.Internal.Schema
42import Data.OpenApi.Internal.Schema
43+import Data.OpenApi.Internal.ParamSchema
44import Data.Proxy
44import Data.Proxy
45−import Data.Text (Text)
46−import qualified Data.Text as T
47import Data.Typeable
45import Data.Typeable
48import Deriving.Aeson
46import Deriving.Aeson
49import GHC.Generics
47import GHC.Generics
50import GHC.TypeLits
48import GHC.TypeLits
52−data Description (desc :: Symbol) = Description
50+-- $setup
51+-- >>> import qualified Data.Yaml
52+-- >>> import qualified Data.ByteString.Char8
54+#ifdef SERVANT_DESCRIPTION
57+import Data.Text (Text)
58+import qualified Data.Text as T
54instance (AesonOptions xs) => AesonOptions (Description f ': xs) where
60instance (AesonOptions xs) => AesonOptions (Description f ': xs) where
55 aesonOptions = aesonOptions @xs
61 aesonOptions = aesonOptions @xs
@@ -60,9 +66,7 @@ instance KnownSymbol t => OpenApiOptionModifier (Description t) where
60toTextLine :: forall s. KnownSymbol s => Text
66toTextLine :: forall s. KnownSymbol s => Text
61toTextLine = "\n\n" <> T.pack (symbolVal (Proxy @s))
67toTextLine = "\n\n" <> T.pack (symbolVal (Proxy @s))
64−-- >>> import qualified Data.Yaml
65−-- >>> import qualified Data.ByteString.Char8
67type CustomOpenApi = CustomJSON
71type CustomOpenApi = CustomJSON
@@ -79,7 +83,7 @@ instance
79 ToParamSchema (CustomJSON (xs :: k) x)
83 ToParamSchema (CustomJSON (xs :: k) x)
81 toParamSchema Proxy =
85 toParamSchema Proxy =
82− genericToParamSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
86+ genericToParamSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
84class OpenApiOptionModifier x where
88class OpenApiOptionModifier x where
85 openApiOptionsModifier :: SchemaOptions -> SchemaOptions
89 openApiOptionsModifier :: SchemaOptions -> SchemaOptions
@@ -102,10 +106,8 @@ instance OpenApiOptionModifier UnwrapUnaryRecords where
103instance OpenApiOptionModifier OmitNothingFields
107instance OpenApiOptionModifier OmitNothingFields
105−#if MIN_VERSION_deriving_aeson(0,2,4)
106instance OpenApiOptionModifier RejectUnknownFields where
109instance OpenApiOptionModifier RejectUnknownFields where
107 openApiSchemaModifier = schema . additionalProperties .~ Just (AdditionalPropertiesAllowed False)
110 openApiSchemaModifier = schema . additionalProperties .~ Just (AdditionalPropertiesAllowed False)
110instance StringModifier f => OpenApiOptionModifier (FieldLabelModifier f) where
112instance StringModifier f => OpenApiOptionModifier (FieldLabelModifier f) where
111 openApiOptionsModifier o = o {fieldLabelModifier = getStringModifier @f}
113 openApiOptionsModifier o = o {fieldLabelModifier = getStringModifier @f}