@@ -39,19 +39,17 @@ 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
42import Data.OpenApi.Internal.Schema
43import Data.OpenApi.Internal.Schema
43import Data.Proxy
44import Data.Proxy
45+import Data.Text (Text)
46+import qualified Data.Text as T
44import Data.Typeable
47import Data.Typeable
45import Deriving.Aeson
48import Deriving.Aeson
46import GHC.Generics
49import GHC.Generics
47import GHC.TypeLits
50import GHC.TypeLits
49−
52+data Description (desc :: Symbol) = Description
50−#ifdef SERVANT_DESCRIPTION
53−import Data.Text (Text)
54−import qualified Data.Text as T
56instance (AesonOptions xs) => AesonOptions (Description f ': xs) where
54instance (AesonOptions xs) => AesonOptions (Description f ': xs) where
57 aesonOptions = aesonOptions @xs
55 aesonOptions = aesonOptions @xs
@@ -62,8 +60,6 @@ instance KnownSymbol t => OpenApiOptionModifier (Description t) where
62toTextLine :: forall s. KnownSymbol s => Text
60toTextLine :: forall s. KnownSymbol s => Text
63toTextLine = "\n\n" <> T.pack (symbolVal (Proxy @s))
61toTextLine = "\n\n" <> T.pack (symbolVal (Proxy @s))
68-- >>> import qualified Data.Yaml
64-- >>> import qualified Data.Yaml
69-- >>> import qualified Data.ByteString.Char8
65-- >>> import qualified Data.ByteString.Char8
@@ -78,6 +74,13 @@ instance
78 openApiSchemaModifier @xs
74 openApiSchemaModifier @xs
79 <$> genericDeclareNamedSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
75 <$> genericDeclareNamedSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
78+ (OpenApiOptionModifier xs, GToParamSchema (Rep x), Generic x) =>
79+ ToParamSchema (CustomJSON (xs :: k) x)
81+ toParamSchema Proxy =
82+ genericToParamSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
81class OpenApiOptionModifier x where
84class OpenApiOptionModifier x where
82 openApiOptionsModifier :: SchemaOptions -> SchemaOptions
85 openApiOptionsModifier :: SchemaOptions -> SchemaOptions
83 openApiOptionsModifier = id
86 openApiOptionsModifier = id
@@ -99,8 +102,10 @@ instance OpenApiOptionModifier UnwrapUnaryRecords where
100instance OpenApiOptionModifier OmitNothingFields
103instance OpenApiOptionModifier OmitNothingFields
105+#if MIN_VERSION_deriving_aeson(0,2,4)
102instance OpenApiOptionModifier RejectUnknownFields where
106instance OpenApiOptionModifier RejectUnknownFields where
103 openApiSchemaModifier = schema . additionalProperties .~ Just (AdditionalPropertiesAllowed False)
107 openApiSchemaModifier = schema . additionalProperties .~ Just (AdditionalPropertiesAllowed False)
105instance StringModifier f => OpenApiOptionModifier (FieldLabelModifier f) where
110instance StringModifier f => OpenApiOptionModifier (FieldLabelModifier f) where
106 openApiOptionsModifier o = o {fieldLabelModifier = getStringModifier @f}
111 openApiOptionsModifier o = o {fieldLabelModifier = getStringModifier @f}