git.iko.soy/typeable/openapi3
on master help sign in
Add ToParamSchema instances for [a], Set a and HashSet a
1a35138Nickolay Kudasov
src/Data/Swagger/Internal/ParamSchema.hs+15
@@ -3,6 +3,7 @@
3{-# LANGUAGE FlexibleInstances #-}
3{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE KindSignatures #-}
4{-# LANGUAGE KindSignatures #-}
5{-# LANGUAGE OverloadedStrings #-}
5{-# LANGUAGE OverloadedStrings #-}
6+{-# LANGUAGE PackageImports #-}
6{-# LANGUAGE PolyKinds #-}
7{-# LANGUAGE PolyKinds #-}
7{-# LANGUAGE ScopedTypeVariables #-}
8{-# LANGUAGE ScopedTypeVariables #-}
8{-# LANGUAGE TypeOperators #-}
9{-# LANGUAGE TypeOperators #-}
@@ -15,7 +16,9 @@ import Data.Proxy
15import GHC.Generics
16import GHC.Generics
16
17
17import Data.Int
18import Data.Int
19+import "unordered-containers" Data.HashSet (HashSet)
18import Data.Monoid
20import Data.Monoid
21+import Data.Set (Set)
19import Data.Scientific
22import Data.Scientific
20import qualified Data.Text as T
23import qualified Data.Text as T
21import qualified Data.Text.Lazy as TL
24import qualified Data.Text.Lazy as TL
@@ -168,6 +171,18 @@ instance ToParamSchema a => ToParamSchema (First a) where toParamSchema _ = to
168instance ToParamSchema a => ToParamSchema (Last a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
171instance ToParamSchema a => ToParamSchema (Last a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
169instance ToParamSchema a => ToParamSchema (Dual a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
172instance ToParamSchema a => ToParamSchema (Dual a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
170
173
174+instance ToParamSchema a => ToParamSchema [a] where
175+ toParamSchema _ = mempty
176+ & schemaType .~ SwaggerArray
177+ & schemaItems ?~ SwaggerItemsPrimitive (Items Nothing (toParamSchema (Proxy :: Proxy a)))
178+
179+instance ToParamSchema a => ToParamSchema (Set a) where
180+ toParamSchema _ = toParamSchema (Proxy :: Proxy [a])
181+ & schemaUniqueItems ?~ True
182+
183+instance ToParamSchema a => ToParamSchema (HashSet a) where
184+ toParamSchema _ = toParamSchema (Proxy :: Proxy (Set a))
185+
171-- |
186-- |
172-- >>> encode $ toParamSchema (Proxy :: Proxy ())
187-- >>> encode $ toParamSchema (Proxy :: Proxy ())
173-- "{\"type\":\"string\",\"enum\":[\"_\"]}"
188-- "{\"type\":\"string\",\"enum\":[\"_\"]}"