git.iko.soy/typeable/openapi3
on master help sign in
Change name type in NamedSchema to Text
a127579Nickolay Kudasov
src/Data/Swagger/Internal/Schema.hs+16−16
@@ -43,7 +43,7 @@ import Data.Swagger.SchemaOptions
43
43
44-- | A @'Schema'@ with an optional name.
44-- | A @'Schema'@ with an optional name.
45-- This name can be used in references.
45-- This name can be used in references.
46−type NamedSchema = (Maybe String, Schema)
46+type NamedSchema = (Maybe T.Text, Schema)
47
47
48-- | Schema definitions, a mapping from schema name to @'Schema'@.
48-- | Schema definitions, a mapping from schema name to @'Schema'@.
49type Definitions = HashMap T.Text Schema
49type Definitions = HashMap T.Text Schema
@@ -51,7 +51,7 @@ type Definitions = HashMap T.Text Schema
51unnamed :: Schema -> NamedSchema
51unnamed :: Schema -> NamedSchema
52unnamed schema = (Nothing, schema)
52unnamed schema = (Nothing, schema)
53
53
54−named :: String -> Schema -> NamedSchema
54+named :: T.Text -> Schema -> NamedSchema
55named name schema = (Just name, schema)
55named name schema = (Just name, schema)
56
56
57plain :: Schema -> Declare Definitions NamedSchema
57plain :: Schema -> Declare Definitions NamedSchema
@@ -60,7 +60,7 @@ plain = pure . unnamed
60unname :: NamedSchema -> NamedSchema
60unname :: NamedSchema -> NamedSchema
61unname (_, schema) = (Nothing, schema)
61unname (_, schema) = (Nothing, schema)
62
62
63−rename :: Maybe String -> NamedSchema -> NamedSchema
63+rename :: Maybe T.Text -> NamedSchema -> NamedSchema
64rename name (_, schema) = (name, schema)
64rename name (_, schema) = (name, schema)
65
65
66-- | Convert a type into @'Schema'@.
66-- | Convert a type into @'Schema'@.
@@ -123,7 +123,7 @@ toNamedSchema :: ToSchema a => proxy a -> NamedSchema
123toNamedSchema = undeclare . declareNamedSchema
123toNamedSchema = undeclare . declareNamedSchema
124
124
125-- | Get type's schema name according to its @'ToSchema'@ instance.
125-- | Get type's schema name according to its @'ToSchema'@ instance.
126−schemaName :: ToSchema a => proxy a -> Maybe String
126+schemaName :: ToSchema a => proxy a -> Maybe T.Text
127schemaName = fst . toNamedSchema
127schemaName = fst . toNamedSchema
128
128
129-- | Convert a type into a schema.
129-- | Convert a type into a schema.
@@ -146,11 +146,11 @@ declareSchemaRef :: ToSchema a => proxy a -> Declare Definitions (Referenced Sch
146declareSchemaRef proxy = do
146declareSchemaRef proxy = do
147 case toNamedSchema proxy of
147 case toNamedSchema proxy of
148 (Just name, schema) -> do
148 (Just name, schema) -> do
149− known <- looks (HashMap.member (T.pack name))
149+ known <- looks (HashMap.member name)
150 when (not known) $ do
150 when (not known) $ do
151− declare [(T.pack name, schema)]
151+ declare [(name, schema)]
152 void $ declareNamedSchema proxy
152 void $ declareNamedSchema proxy
153− return $ Ref (Reference ("#/definitions/" <> T.pack name))
153+ return $ Ref (Reference ("#/definitions/" <> name))
154 _ -> Inline <$> declareSchema proxy
154 _ -> Inline <$> declareSchema proxy
155
155
156class GToSchema (f :: * -> *) where
156class GToSchema (f :: * -> *) where
@@ -195,11 +195,11 @@ instance (ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e) => ToSchem
195instance (ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e, ToSchema f) => ToSchema (a, b, c, d, e, f)
195instance (ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e, ToSchema f) => ToSchema (a, b, c, d, e, f)
196instance (ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e, ToSchema f, ToSchema g) => ToSchema (a, b, c, d, e, f, g)
196instance (ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e, ToSchema f, ToSchema g) => ToSchema (a, b, c, d, e, f, g)
197
197
198−timeSchema :: String -> Schema
198+timeSchema :: T.Text -> Schema
199timeSchema format = mempty
199timeSchema format = mempty
200 & schemaType .~ SwaggerString
200 & schemaType .~ SwaggerString
201− & schemaFormat ?~ T.pack format
201+ & schemaFormat ?~ format
202− & schemaMinLength ?~ toInteger (length format)
202+ & schemaMinLength ?~ toInteger (T.length format)
203
203
204-- |
204-- |
205-- >>> toSchema (Proxy :: Proxy Day) ^. schemaFormat
205-- >>> toSchema (Proxy :: Proxy Day) ^. schemaFormat
@@ -218,7 +218,7 @@ instance ToSchema LocalTime where
218-- Just "yyyy-mm-ddThh:MM:ss(Z|+hh:MM)"
218-- Just "yyyy-mm-ddThh:MM:ss(Z|+hh:MM)"
219instance ToSchema ZonedTime where
219instance ToSchema ZonedTime where
220 declareNamedSchema _ = pure $ named "ZonedTime" $ timeSchema "yyyy-mm-ddThh:MM:ss(Z|+hh:MM)"
220 declareNamedSchema _ = pure $ named "ZonedTime" $ timeSchema "yyyy-mm-ddThh:MM:ss(Z|+hh:MM)"
221− & schemaMinLength ?~ toInteger (length ("yyyy-mm-ddThh:MM:ssZ" :: String))
221+ & schemaMinLength ?~ toInteger (T.length "yyyy-mm-ddThh:MM:ssZ")
222
222
223instance ToSchema NominalDiffTime where
223instance ToSchema NominalDiffTime where
224 declareNamedSchema _ = declareNamedSchema (Proxy :: Proxy Integer)
224 declareNamedSchema _ = declareNamedSchema (Proxy :: Proxy Integer)
@@ -295,9 +295,9 @@ genericDeclareSchema opts proxy = snd <$> genericDeclareNamedSchema opts proxy
295genericDeclareNamedSchema :: forall a proxy. (Generic a, GToSchema (Rep a)) => SchemaOptions -> proxy a -> Declare Definitions NamedSchema
295genericDeclareNamedSchema :: forall a proxy. (Generic a, GToSchema (Rep a)) => SchemaOptions -> proxy a -> Declare Definitions NamedSchema
296genericDeclareNamedSchema opts _ = gdeclareNamedSchema opts (Proxy :: Proxy (Rep a)) mempty
296genericDeclareNamedSchema opts _ = gdeclareNamedSchema opts (Proxy :: Proxy (Rep a)) mempty
297
297
298−gdatatypeSchemaName :: forall proxy d. Datatype d => SchemaOptions -> proxy d -> Maybe String
298+gdatatypeSchemaName :: forall proxy d. Datatype d => SchemaOptions -> proxy d -> Maybe T.Text
299gdatatypeSchemaName opts _ = case name of
299gdatatypeSchemaName opts _ = case name of
300− (c:_) | isAlpha c && isUpper c -> Just name
300+ (c:_) | isAlpha c && isUpper c -> Just (T.pack name)
301 _ -> Nothing
301 _ -> Nothing
302 where
302 where
303 name = datatypeNameModifier opts (datatypeName (Proxy3 :: Proxy3 d f a))
303 name = datatypeNameModifier opts (datatypeName (Proxy3 :: Proxy3 d f a))
@@ -356,11 +356,11 @@ gdeclareSchemaRef :: GToSchema a => SchemaOptions -> proxy a -> Declare Definiti
356gdeclareSchemaRef opts proxy = do
356gdeclareSchemaRef opts proxy = do
357 case gtoNamedSchema opts proxy of
357 case gtoNamedSchema opts proxy of
358 (Just name, schema) -> do
358 (Just name, schema) -> do
359− known <- looks (HashMap.member (T.pack name))
359+ known <- looks (HashMap.member name)
360 when (not known) $ do
360 when (not known) $ do
361− declare [(T.pack name, schema)]
361+ declare [(name, schema)]
362 void $ gdeclareNamedSchema opts proxy mempty
362 void $ gdeclareNamedSchema opts proxy mempty
363− return $ Ref (Reference ("#/definitions/" <> T.pack name))
363+ return $ Ref (Reference ("#/definitions/" <> name))
364 _ -> Inline <$> gdeclareSchema opts proxy
364 _ -> Inline <$> gdeclareSchema opts proxy
365
365
366appendItem :: Referenced Schema -> Maybe SchemaItems -> Maybe SchemaItems
366appendItem :: Referenced Schema -> Maybe SchemaItems -> Maybe SchemaItems
test/Data/Swagger/SchemaSpec.hs+1−1
@@ -28,7 +28,7 @@ checkToSchema proxy js = toSchema proxy <~> js
28checkSchemaName :: ToSchema a => Maybe String -> Proxy a -> Spec
28checkSchemaName :: ToSchema a => Maybe String -> Proxy a -> Spec
29checkSchemaName sname proxy =
29checkSchemaName sname proxy =
30 it ("schema name is " ++ show sname) $
30 it ("schema name is " ++ show sname) $
31− schemaName proxy `shouldBe` sname
31+ schemaName proxy `shouldBe` fmap Text.pack sname
32
32
33checkDefs :: ToSchema a => Proxy a -> [String] -> Spec
33checkDefs :: ToSchema a => Proxy a -> [String] -> Spec
34checkDefs proxy names =
34checkDefs proxy names =