diff options
Diffstat (limited to 'backend/app')
-rw-r--r-- | backend/app/Main.hs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/backend/app/Main.hs b/backend/app/Main.hs index 47dc41a..063bb1a 100644 --- a/backend/app/Main.hs +++ b/backend/app/Main.hs @@ -108,12 +108,16 @@ fromAutoTypes path (U.Object ps) = ("$id", J.toJSON @String (path <> ".schema.json")), ("title", J.toJSON @String path), ("type", J.toJSON @String "object"), - ("properties", J.toJSON (M.map toProperty ps)) + ("properties", J.toJSON (M.map toProperty ps)), + ("required", J.toJSON (M.keys (M.filter isRequired ps))) ] where - toProperty (U.Scalar "string") = "string" :: String - toProperty (U.Option (Just (U.Scalar "string"))) = "string?" :: String - toProperty (U.Reference i) = "$ref:" <> i + isRequired (U.Option _) = False + isRequired _ = True + toProperty :: U.T -> M.Map String String + toProperty (U.Scalar "string") = M.fromList [("type", "string")] + toProperty (U.Option (Just (U.Scalar "string"))) = M.fromList [("type", "string")] + toProperty (U.Reference i) = M.fromList [("$ref", i)] toProperty x = error ("unhandled type: " <> show x) fromAutoTypes _ _ = error "Only JSON objects are supported." |