support optional fields

This commit is contained in:
Alexander Foremny
2024-06-06 22:42:44 +02:00
parent 612da78d17
commit b1a4822d59
4 changed files with 37 additions and 10 deletions

View File

@@ -115,12 +115,15 @@ schemaForm schema =
"string" ->
A.Object . AM.singleton k
<$> ( F.mapValues (getO k) (setO k) $
jsonString (AK.toString k)
fmap A.String . F.mapValues fromJson toJson $
F.input (AK.toString k)
)
"string?" ->
A.Object . AM.singleton k
<$> ( F.mapValues (getO k) (setO k) $
jsonString (AK.toString k)
<$> ( F.mapValues (getO k) (setO k)
$ fmap (maybe A.Null A.String)
. F.mapValues fromJson toJson
$ F.optional (F.input (AK.toString k))
)
)
<$> (M.toList properties)
@@ -143,6 +146,3 @@ getO k (A.Object kvs) = fromMaybe A.Null (AM.lookup k kvs)
setO :: AK.Key -> A.Value -> A.Value -> A.Value
setO k v (A.Object kvs) = A.Object (AM.insert k v kvs)
jsonString :: String -> F.Form A.Value A.Value
jsonString = fmap A.String . F.mapValues fromJson toJson . F.string