From 1e1f0daa077eaf73382c09b06456947e8a9dc204 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= <kmein@posteo.de>
Date: Sat, 12 Oct 2024 11:19:20 +0200
Subject: correct json schema syntax for optional types and references

---
 backend/app/Main.hs | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

(limited to 'backend')

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."
 
-- 
cgit v1.2.3