git.iko.soy/typeable/swagger2
on master help sign in
Add Version instance (#152)
19a542eMatt Parsons
src/Data/Swagger/Internal/ParamSchema.hs+6
@@ -39,6 +39,7 @@ import qualified Data.Vector as V
39import qualified Data.Vector.Primitive as VP
39import qualified Data.Vector.Primitive as VP
40import qualified Data.Vector.Storable as VS
40import qualified Data.Vector.Storable as VS
41import qualified Data.Vector.Unboxed as VU
41import qualified Data.Vector.Unboxed as VU
42+import Data.Version (Version)
42import Numeric.Natural
43import Numeric.Natural
43import Data.Word
44import Data.Word
44import Data.UUID.Types (UUID)
45import Data.UUID.Types (UUID)
@@ -218,6 +219,11 @@ instance ToParamSchema T.Text where
218instance ToParamSchema TL.Text where
219instance ToParamSchema TL.Text where
219 toParamSchema _ = toParamSchema (Proxy :: Proxy String)
220 toParamSchema _ = toParamSchema (Proxy :: Proxy String)
220
221
222+instance ToParamSchema Version where
223+ toParamSchema _ = mempty
224+ & type_ .~ SwaggerString
225+ & pattern ?~ "^\\d+(\\.\\d+)*$"
226+
221#if __GLASGOW_HASKELL__ < 800
227#if __GLASGOW_HASKELL__ < 800
222#else
228#else
223type family ToParamSchemaByteStringError bs where
229type family ToParamSchemaByteStringError bs where
src/Data/Swagger/Internal/Schema.hs+3
@@ -57,6 +57,7 @@ import qualified Data.Vector as V
57import qualified Data.Vector.Primitive as VP
57import qualified Data.Vector.Primitive as VP
58import qualified Data.Vector.Storable as VS
58import qualified Data.Vector.Storable as VS
59import qualified Data.Vector.Unboxed as VU
59import qualified Data.Vector.Unboxed as VU
60+import Data.Version (Version)
60import Numeric.Natural
61import Numeric.Natural
61import Data.Word
62import Data.Word
62import GHC.Generics
63import GHC.Generics
@@ -498,6 +499,8 @@ instance ToSchema UTCTime where
498instance ToSchema T.Text where declareNamedSchema = plain . paramSchemaToSchema
499instance ToSchema T.Text where declareNamedSchema = plain . paramSchemaToSchema
499instance ToSchema TL.Text where declareNamedSchema = plain . paramSchemaToSchema
500instance ToSchema TL.Text where declareNamedSchema = plain . paramSchemaToSchema
500
501
502+instance ToSchema Version where declareNamedSchema = plain . paramSchemaToSchema
503+
501#if __GLASGOW_HASKELL__ < 800
504#if __GLASGOW_HASKELL__ < 800
502#else
505#else
503type family ToSchemaByteStringError bs where
506type family ToSchemaByteStringError bs where
test/Data/Swagger/Schema/ValidationSpec.hs+2
@@ -23,6 +23,7 @@ import Data.Proxy
23import Data.Time
23import Data.Time
24import qualified Data.Text as T
24import qualified Data.Text as T
25import qualified Data.Text.Lazy as TL
25import qualified Data.Text.Lazy as TL
26+import Data.Version (Version)
26import Data.Set (Set)
27import Data.Set (Set)
27import Data.Word
28import Data.Word
28import GHC.Generics
29import GHC.Generics
@@ -90,6 +91,7 @@ spec = do
90 prop "MyRoseTree" $ shouldValidate (Proxy :: Proxy MyRoseTree)
91 prop "MyRoseTree" $ shouldValidate (Proxy :: Proxy MyRoseTree)
91 prop "Light" $ shouldValidate (Proxy :: Proxy Light)
92 prop "Light" $ shouldValidate (Proxy :: Proxy Light)
92 prop "ButtonImages" $ shouldValidate (Proxy :: Proxy ButtonImages)
93 prop "ButtonImages" $ shouldValidate (Proxy :: Proxy ButtonImages)
94+ prop "Version" $ shouldValidate (Proxy :: Proxy Version)
93
95
94 describe "invalid cases" $ do
96 describe "invalid cases" $ do
95 prop "invalidPersonToJSON" $ shouldNotValidate invalidPersonToJSON
97 prop "invalidPersonToJSON" $ shouldNotValidate invalidPersonToJSON