refactor: push openapi/openapi-spec call inside merge

to make reitit.coercion.spec match reitit.coercion.schema
This commit is contained in:
Joel Kaasinen 2023-03-10 08:57:02 +02:00
parent 41c4d78823
commit bcd12d9f31

View file

@ -107,40 +107,39 @@
(if (:schema $) (if (:schema $)
(update $ :schema #(coercion/-compile-model this % nil)) (update $ :schema #(coercion/-compile-model this % nil))
$))]))}))) $))]))})))
:openapi (openapi/openapi-spec :openapi (merge
(merge (when (seq (dissoc parameters :body :request))
(when (seq (dissoc parameters :body :request)) (openapi/openapi-spec {::openapi/parameters
{::openapi/parameters (into (empty parameters)
(into (empty parameters) (for [[k v] (dissoc parameters :body :request)]
(for [[k v] (dissoc parameters :body :request)] [k (coercion/-compile-model this v nil)]))}))
[k (coercion/-compile-model this v nil)]))}) (when (:body parameters)
(when (:body parameters) {:requestBody (openapi/openapi-spec
{:requestBody (openapi/openapi-spec {::openapi/content (zipmap content-types (repeat (coercion/-compile-model this (:body parameters) nil)))})})
{::openapi/content (zipmap content-types (repeat (coercion/-compile-model this (:body parameters) nil)))})}) (when (:request parameters)
(when (:request parameters) {:requestBody (openapi/openapi-spec
{:requestBody (openapi/openapi-spec {::openapi/content (merge
{::openapi/content (merge (when-let [default (get-in parameters [:request :body])]
(when-let [default (get-in parameters [:request :body])] (zipmap content-types (repeat (coercion/-compile-model this default nil))))
(zipmap content-types (repeat (coercion/-compile-model this default nil)))) (into {}
(into {} (for [[format model] (:content (:request parameters))]
(for [[format model] (:content (:request parameters))] [format (coercion/-compile-model this model nil)])))})})
[format (coercion/-compile-model this model nil)])))})}) (when responses
(when responses {:responses
{:responses (into
(into (empty responses)
(empty responses) (for [[k {:keys [body content] :as response}] responses]
(for [[k {:keys [body content] :as response}] responses] [k (merge
[k (merge (select-keys response [:description])
(select-keys response [:description]) (when (or body content)
(when (or body content) (openapi/openapi-spec
(openapi/openapi-spec {::openapi/content (merge
{::openapi/content (merge (when body
(when body (zipmap content-types (repeat (coercion/-compile-model this (:body response) nil))))
(zipmap content-types (repeat (coercion/-compile-model this (:body response) nil)))) (when response
(when response (into {}
(into {} (for [[format model] (:content response)]
(for [[format model] (:content response)] [format (coercion/-compile-model this model nil)]))))})))]))}))
[format (coercion/-compile-model this model nil)]))))})))]))})))
(throw (throw
(ex-info (ex-info
(str "Can't produce Spec apidocs for " specification) (str "Can't produce Spec apidocs for " specification)