@@ -3,6 +3,7 @@
33{-# LANGUAGE FlexibleInstances #-}
44{-# LANGUAGE KindSignatures #-}
55{-# LANGUAGE OverloadedStrings #-}
6+{-# LANGUAGE PackageImports #-}
67{-# LANGUAGE PolyKinds #-}
78{-# LANGUAGE ScopedTypeVariables #-}
89{-# LANGUAGE TypeOperators #-}
@@ -15,7 +16,9 @@ import Data.Proxy
1516import GHC.Generics
1617
1718import Data.Int
19+import "unordered-containers" Data.HashSet (HashSet)
1820import Data.Monoid
21+import Data.Set (Set)
1922import Data.Scientific
2023import qualified Data.Text as T
2124import qualified Data.Text.Lazy as TL
@@ -168,6 +171,18 @@ instance ToParamSchema a => ToParamSchema (First a) where toParamSchema _ = to
168171instance ToParamSchema a => ToParamSchema (Last a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
169172instance ToParamSchema a => ToParamSchema (Dual a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
170173
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+
171186-- |
172187-- >>> encode $ toParamSchema (Proxy :: Proxy ())
173188-- "{\"type\":\"string\",\"enum\":[\"_\"]}"