WorksHub/leona

Leona doesn't extract enums from input specs which leads to compile failure

acron0 opened this issue · 1 comments

For example

(s/def ::my-value int?)
(s/def ::my-object (s/keys :req-un [::my-value]))
(s/def ::my-query-enum #{"foo" "bar" "baz"})
(s/def ::query-args (s/keys :req-un [::my-query-enum]))

(-> (leona/create)
    (leona/attach-query ::query-args ::my-object some-handler)
    (leona/compile))

... will fail, because ::my-query-enum does not appear in the :enums map of the generated schema.

Error:

Argument `my_query_enum' of field `QueryRoot/my_object' references unknown type `my_query_enum'.

Until this is fixed, the workaround is to add ::query-args to Leona's specs manually before compiling the schema.

Like this:

(-> (leona/create)
    (leona/attach-query ::query-args ::my-object some-handler)
    (update :specs conj ::query-args) ; <- workaround
    (leona/compile))