@@ -32,6 +32,7 @@ import Data.Word
32import GHC.Generics
32import GHC.Generics
34import Data.Swagger.Internal
34import Data.Swagger.Internal
35+import Data.Swagger.Internal.ParamSchema (ToParamSchema(..))
35import Data.Swagger.Lens
36import Data.Swagger.Lens
36import Data.Swagger.SchemaOptions
37import Data.Swagger.SchemaOptions
@@ -117,41 +118,24 @@ instance {-# OVERLAPPABLE #-} ToSchema a => ToSchema [a] where
117 & schemaType .~ SwaggerArray
118 & schemaType .~ SwaggerArray
118 & schemaItems ?~ SchemaItemsObject (toSchemaRef (Proxy :: Proxy a))
119 & schemaItems ?~ SchemaItemsObject (toSchemaRef (Proxy :: Proxy a))
120−instance {-# OVERLAPPING #-} ToSchema String where
121+instance {-# OVERLAPPING #-} ToSchema String where toNamedSchema = unnamed . paramSchemaToSchema
121− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerString
123−instance ToSchema Bool where
122+instance ToSchema Bool where toNamedSchema = unnamed . paramSchemaToSchema
124− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerBoolean
126−instance ToSchema Integer where
123+instance ToSchema Integer where toNamedSchema = unnamed . paramSchemaToSchema
127− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerInteger
129−instance ToSchema Int where toNamedSchema = unnamed . toSchemaBoundedIntegral
124+instance ToSchema Int where toNamedSchema = unnamed . paramSchemaToSchema
130−instance ToSchema Int8 where toNamedSchema = unnamed . toSchemaBoundedIntegral
125+instance ToSchema Int8 where toNamedSchema = unnamed . paramSchemaToSchema
131−instance ToSchema Int16 where toNamedSchema = unnamed . toSchemaBoundedIntegral
126+instance ToSchema Int16 where toNamedSchema = unnamed . paramSchemaToSchema
132−instance ToSchema Int32 where toNamedSchema = unnamed . toSchemaBoundedIntegral
127+instance ToSchema Int32 where toNamedSchema = unnamed . paramSchemaToSchema
133−instance ToSchema Int64 where toNamedSchema = unnamed . toSchemaBoundedIntegral
128+instance ToSchema Int64 where toNamedSchema = unnamed . paramSchemaToSchema
135−instance ToSchema Word where toNamedSchema = unnamed . toSchemaBoundedIntegral
129+instance ToSchema Word where toNamedSchema = unnamed . paramSchemaToSchema
136−instance ToSchema Word8 where toNamedSchema = unnamed . toSchemaBoundedIntegral
130+instance ToSchema Word8 where toNamedSchema = unnamed . paramSchemaToSchema
137−instance ToSchema Word16 where toNamedSchema = unnamed . toSchemaBoundedIntegral
131+instance ToSchema Word16 where toNamedSchema = unnamed . paramSchemaToSchema
138−instance ToSchema Word32 where toNamedSchema = unnamed . toSchemaBoundedIntegral
132+instance ToSchema Word32 where toNamedSchema = unnamed . paramSchemaToSchema
139−instance ToSchema Word64 where toNamedSchema = unnamed . toSchemaBoundedIntegral
133+instance ToSchema Word64 where toNamedSchema = unnamed . paramSchemaToSchema
141−instance ToSchema Char where
135+instance ToSchema Char where toNamedSchema = unnamed . paramSchemaToSchema
142− toNamedSchema _ = unnamed $ mempty
143− & schemaType .~ SwaggerString
144− & schemaMaxLength ?~ 1
145− & schemaMinLength ?~ 1
147−instance ToSchema Scientific where
136+instance ToSchema Scientific where toNamedSchema = unnamed . paramSchemaToSchema
148− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
150−instance ToSchema Double where
137+instance ToSchema Double where toNamedSchema = unnamed . paramSchemaToSchema
151− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
153−instance ToSchema Float where
138+instance ToSchema Float where toNamedSchema = unnamed . paramSchemaToSchema
154− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
156instance ToSchema a => ToSchema (Maybe a) where
140instance ToSchema a => ToSchema (Maybe a) where
157 toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
141 toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
@@ -202,11 +186,8 @@ instance ToSchema NominalDiffTime where
202instance ToSchema UTCTime where
186instance ToSchema UTCTime where
203 toNamedSchema _ = timeNamedSchema "UTCTime" "yyyy-mm-ddThh:MM:ssZ"
187 toNamedSchema _ = timeNamedSchema "UTCTime" "yyyy-mm-ddThh:MM:ssZ"
205−instance ToSchema T.Text where
189+instance ToSchema T.Text where toNamedSchema = unnamed . paramSchemaToSchema
206− toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy String)
208−instance ToSchema TL.Text where
190+instance ToSchema TL.Text where toNamedSchema = unnamed . paramSchemaToSchema
209− toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy String)
211instance ToSchema IntSet where toNamedSchema _ = toNamedSchema (Proxy :: Proxy (Set Int))
192instance ToSchema IntSet where toNamedSchema _ = toNamedSchema (Proxy :: Proxy (Set Int))
@@ -232,8 +213,9 @@ instance ToSchema a => ToSchema (Set a) where
233instance ToSchema a => ToSchema (HashSet a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy (Set a))
214instance ToSchema a => ToSchema (HashSet a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy (Set a))
235−instance ToSchema All where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy Bool)
216+instance ToSchema All where toNamedSchema = unnamed . paramSchemaToSchema
236−instance ToSchema Any where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy Bool)
217+instance ToSchema Any where toNamedSchema = unnamed . paramSchemaToSchema
237instance ToSchema a => ToSchema (Sum a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
219instance ToSchema a => ToSchema (Sum a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
238instance ToSchema a => ToSchema (Product a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
220instance ToSchema a => ToSchema (Product a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
239instance ToSchema a => ToSchema (First a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
221instance ToSchema a => ToSchema (First a) where toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy a)
@@ -273,6 +255,16 @@ gdatatypeSchemaName opts _ = case name of
274 name = datatypeNameModifier opts (datatypeName (Proxy3 :: Proxy3 d f a))
256 name = datatypeNameModifier opts (datatypeName (Proxy3 :: Proxy3 d f a))
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)
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)
276nullarySchema :: Schema
268nullarySchema :: Schema
277nullarySchema = mempty
269nullarySchema = mempty
278 & schemaType .~ SwaggerArray
270 & schemaType .~ SwaggerArray