git.iko.soy/typeable/openapi3
on master help sign in
Add paramSchemaTo[Named]Schema helpers and reuse ToParamSchema instances
afdeb13Nickolay Kudasov
src/Data/Swagger/Internal/Schema.hs+34−42
@@ -32,6 +32,7 @@ import Data.Word
32import GHC.Generics
32import GHC.Generics
33
33
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
37
38
@@ -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))
119
120
120−instance {-# OVERLAPPING #-} ToSchema String where
121+instance {-# OVERLAPPING #-} ToSchema String where toNamedSchema = unnamed . paramSchemaToSchema
121− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerString
122−
123−instance ToSchema Bool where
122+instance ToSchema Bool where toNamedSchema = unnamed . paramSchemaToSchema
124− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerBoolean
125−
126−instance ToSchema Integer where
123+instance ToSchema Integer where toNamedSchema = unnamed . paramSchemaToSchema
127− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerInteger
128−
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
134−
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
140−
134+
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
146−
147−instance ToSchema Scientific where
136+instance ToSchema Scientific where toNamedSchema = unnamed . paramSchemaToSchema
148− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
149−
150−instance ToSchema Double where
137+instance ToSchema Double where toNamedSchema = unnamed . paramSchemaToSchema
151− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
152−
153−instance ToSchema Float where
138+instance ToSchema Float where toNamedSchema = unnamed . paramSchemaToSchema
154− toNamedSchema _ = unnamed $ mempty & schemaType .~ SwaggerNumber
155
139
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"
204
188
205−instance ToSchema T.Text where
189+instance ToSchema T.Text where toNamedSchema = unnamed . paramSchemaToSchema
206− toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy String)
207−
208−instance ToSchema TL.Text where
190+instance ToSchema TL.Text where toNamedSchema = unnamed . paramSchemaToSchema
209− toNamedSchema _ = unnamed $ toSchema (Proxy :: Proxy String)
210
191
211instance ToSchema IntSet where toNamedSchema _ = toNamedSchema (Proxy :: Proxy (Set Int))
192instance ToSchema IntSet where toNamedSchema _ = toNamedSchema (Proxy :: Proxy (Set Int))
212
193
@@ -232,8 +213,9 @@ instance ToSchema a => ToSchema (Set a) where
232
213
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))
234
215
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
218+
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
273 where
255 where
274 name = datatypeNameModifier opts (datatypeName (Proxy3 :: Proxy3 d f a))
256 name = datatypeNameModifier opts (datatypeName (Proxy3 :: Proxy3 d f a))
275
257
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+
276nullarySchema :: Schema
268nullarySchema :: Schema
277nullarySchema = mempty
269nullarySchema = mempty
278 & schemaType .~ SwaggerArray
270 & schemaType .~ SwaggerArray