@@ -12,8 +12,10 @@ import Control.Monad.State.Strict
12import Data.Aeson as J
12import Data.Aeson as J
13import Data.Foldable as F
13import Data.Foldable as F
14import Data.HashMap.Strict as H
14import Data.HashMap.Strict as H
15import Data.List.NonEmpty as NE
16import Data.List.NonEmpty as NE
16import Data.Schematic.Schema as S
17import Data.Schematic.Schema as S
18+import Data.Set as Set
17import Data.Singletons
19import Data.Singletons
18import Data.Text
20import Data.Text
19import Data.Traversable
21import Data.Traversable
@@ -84,8 +86,13 @@ toJsonSchema' = \case
84 res <- for objs $ \(n,s) -> do
86 res <- for objs $ \(n,s) -> do
85 s' <- toJsonSchema' s
87 s' <- toJsonSchema' s
86 pure (n, s')
88 pure (n, s')
91+ (_, DSchemaOptional _) -> False
87 pure $ emptySchema
93 pure $ emptySchema
88 { _schemaType = pure $ TypeValidatorString D4.SchemaObject
94 { _schemaType = pure $ TypeValidatorString D4.SchemaObject
95+ , _schemaRequired = pure $ Set.fromList $ fst <$> L.filter nonOpt objs
89 , _schemaProperties = pure $ H.fromList res }
96 , _schemaProperties = pure $ H.fromList res }
90 DSchemaArray acs sch -> do
97 DSchemaArray acs sch -> do
91 res <- toJsonSchema' sch
98 res <- toJsonSchema' sch