@@ -32,6 +32,7 @@ import Data.Word
3232import GHC.Generics
3333
3434import Data.Swagger.Internal
35+import Data.Swagger.Internal.ParamSchema (ToParamSchema(..))
3536import Data.Swagger.Lens
3637import Data.Swagger.SchemaOptions
3738
@@ -117,41 +118,24 @@ instance {-# OVERLAPPABLE #-} ToSchema a => ToSchema [a] where
117118 & schemaType .~ SwaggerArray
118119 & schemaItems ?~ SchemaItemsObject (toSchemaRef (Proxy :: Proxy a))
119120
120−instance {-# OVERLAPPING #-} ToSchema String where
121− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerString
122−
123−instance ToSchema Bool where
124− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerBoolean
125−
126−instance ToSchema Integer where
127− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerInteger
128−
129−instance ToSchema Int where toNamedSchema = unnamed . toSchemaBoundedIntegral
130−instance ToSchema Int8 where toNamedSchema = unnamed . toSchemaBoundedIntegral
131−instance ToSchema Int16 where toNamedSchema = unnamed . toSchemaBoundedIntegral
132−instance ToSchema Int32 where toNamedSchema = unnamed . toSchemaBoundedIntegral
133−instance ToSchema Int64 where toNamedSchema = unnamed . toSchemaBoundedIntegral
134−
135−instance ToSchema Word where toNamedSchema = unnamed . toSchemaBoundedIntegral
136−instance ToSchema Word8 where toNamedSchema = unnamed . toSchemaBoundedIntegral
137−instance ToSchema Word16 where toNamedSchema = unnamed . toSchemaBoundedIntegral
138−instance ToSchema Word32 where toNamedSchema = unnamed . toSchemaBoundedIntegral
139−instance ToSchema Word64 where toNamedSchema = unnamed . toSchemaBoundedIntegral
140−
141−instance ToSchema Char where
142− toNamedSchema _ = unnamed $ mempty
143− & schemaType .~ SwaggerString
144− & schemaMaxLength ?~ 1
145− & schemaMinLength ?~ 1
146−
147−instance ToSchema Scientific where
148− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
149−
150−instance ToSchema Double where
151− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
152−
153−instance ToSchema Float where
154− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
121+instance {-# OVERLAPPING #-} ToSchema String where toNamedSchema = unnamed . paramSchemaToSchema
122+instance ToSchema Bool where toNamedSchema = unnamed . paramSchemaToSchema
123+instance ToSchema Integer where toNamedSchema = unnamed . paramSchemaToSchema
124+instance ToSchema Int where toNamedSchema = unnamed . paramSchemaToSchema
125+instance ToSchema Int8 where toNamedSchema = unnamed . paramSchemaToSchema
126+instance ToSchema Int16 where toNamedSchema = unnamed . paramSchemaToSchema
127+instance ToSchema Int32 where toNamedSchema = unnamed . paramSchemaToSchema
128+instance ToSchema Int64 where toNamedSchema = unnamed . paramSchemaToSchema
129+instance ToSchema Word where toNamedSchema = unnamed . paramSchemaToSchema
130+instance ToSchema Word8 where toNamedSchema = unnamed . paramSchemaToSchema
131+instance ToSchema Word16 where toNamedSchema = unnamed . paramSchemaToSchema
132+instance ToSchema Word32 where toNamedSchema = unnamed . paramSchemaToSchema
133+instance ToSchema Word64 where toNamedSchema = unnamed . paramSchemaToSchema
134+
135+instance ToSchema Char where toNamedSchema = unnamed . paramSchemaToSchema
136+instance ToSchema Scientific where toNamedSchema = unnamed . paramSchemaToSchema
137+instance ToSchema Double where toNamedSchema = unnamed . paramSchemaToSchema
138+instance ToSchema Float where toNamedSchema = unnamed . paramSchemaToSchema
155139
156140instance ToSchema a => ToSchema (Maybe a) where
157141 toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
@@ -202,11 +186,8 @@ instance ToSchema NominalDiffTime where
202186instance ToSchema UTCTime where
203187 toNamedSchema _ = timeNamedSchema "UTCTime" "yyyy-mm-ddThh:MM:ssZ"
204188
205−instance ToSchema T.Text where
206− toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy String)
207−
208−instance ToSchema TL.Text where
209− toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy String)
189+instance ToSchema T.Text where toNamedSchema = unnamed . paramSchemaToSchema
190+instance ToSchema TL.Text where toNamedSchema = unnamed . paramSchemaToSchema
210191
211192instance ToSchema IntSet where toNamedSchema _ = toNamedSchema (Proxy :: Proxy (Set Int))
212193
@@ -232,8 +213,9 @@ instance ToSchema a => ToSchema (Set a) where
232213
233214instance ToSchema a => ToSchema (HashSet a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy (Set a))
234215
235−instance ToSchema All where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy Bool)
236−instance ToSchema Any where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy Bool)
216+instance ToSchema All where toNamedSchema = unnamed . paramSchemaToSchema
217+instance ToSchema Any where toNamedSchema = unnamed . paramSchemaToSchema
218+
237219instance ToSchema a => ToSchema (Sum a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
238220instance ToSchema a => ToSchema (Product a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
239221instance ToSchema a => ToSchema (First a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
@@ -273,6 +255,16 @@ gdatatypeSchemaName opts _ = case name of
273255 where
274256 name = datatypeNameModifier opts (datatypeName (Proxy3 :: Proxy3 d f a))
275257
258+-- | Lift a plain @'ParamSchema'@ into a model @'NamedSchema'@.
259+paramSchemaToNamedSchema :: forall a d f proxy.
260+ (ToParamSchema a, Generic a, Rep a ~ D1 d f, Datatype d)
261+ => SchemaOptions -> proxy a -> NamedSchema
262+paramSchemaToNamedSchema opts proxy = (gdatatypeSchemaName opts (Proxy :: Proxy d), paramSchemaToSchema proxy)
263+
264+-- | Lift a plain @'ParamSchema'@ into a model @'Schema'@.
265+paramSchemaToSchema :: forall a proxy. ToParamSchema a => proxy a -> Schema
266+paramSchemaToSchema _ = mempty & schemaParamSchema .~ toParamSchema (Proxy :: Proxy a)
267+
276268nullarySchema :: Schema
277269nullarySchema = mempty
278270 & schemaType .~ SwaggerArray