Skip to content

Commit 1753316

Browse files
committed
fix: elementReference resolving
1 parent 591efc7 commit 1753316

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

src/aidbox_sdk/converter.clj

+11-21
Original file line numberDiff line numberDiff line change
@@ -150,34 +150,24 @@
150150

151151
;; resolve references
152152

153-
(defn- find-schema-by-url [schemas url]
154-
(->> schemas
155-
(filter #(= url (:url %)))
156-
(first)))
157-
158-
(defn- find-element-by-reference [element-reference schemas]
159-
(let [[schema-url & path] element-reference
160-
schema (find-schema-by-url schemas schema-url)
161-
element (get-in schema (map keyword path))]
162-
(or element {})))
163-
164-
(defn find-elements-by-names [element-names schema]
165-
(filter #(contains?
166-
(set element-names)
167-
(:name %))
168-
(:elements schema)))
169-
170-
(defn resolve-references [schemas]
153+
(defn resolve-element-references [schemas]
171154
(walk/postwalk
172155
(fn [x]
173-
(if-let [reference (:elementReference x)]
156+
;; TODO add type of the reference
157+
(if (:elementReference x)
174158
(merge (dissoc x :elementReference)
175-
(find-element-by-reference reference schemas))
159+
{:type "Reference"})
176160
x))
177161
schemas))
178162

179163
;;
180164

165+
(defn find-elements-by-names [element-names schema]
166+
(filter #(contains?
167+
(set element-names)
168+
(:name %))
169+
(:elements schema)))
170+
181171
(defn resolve-element-choices [schema el]
182172
(if (:choices el)
183173
(let [choices (find-elements-by-names (:choices el) schema)]
@@ -224,7 +214,7 @@
224214

225215
(defn convert [schemas]
226216
(->> schemas
227-
(resolve-references)
217+
(resolve-element-references)
228218
(compile-elements)
229219
(combine-elements)
230220
(map (fn [schema]

test/aidbox_sdk/converter_test.clj

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
(ns aidbox-sdk.converter-test
22
(:require
33
[aidbox-sdk.converter :as sut]
4+
[aidbox-sdk.fixtures :as fixt]
45
[aidbox-sdk.fixtures.schemas :as fixtures]
5-
[clojure.test :refer [are deftest is testing]]))
6+
[clojure.test :refer [are deftest is testing use-fixtures]]))
7+
8+
(use-fixtures :once fixt/prepare-examples)
69

710
(deftest test-converter-utils
811
(testing "url->resource-name"
@@ -24,7 +27,7 @@
2427

2528
(deftest test-resolve-references
2629
(is (= fixtures/schemas-with-element-reference-resolved
27-
(sut/resolve-references fixtures/schemas-with-element-reference))))
30+
(sut/resolve-element-references fixtures/schemas-with-element-reference))))
2831

2932
(deftest test-resolve-choices
3033
(is (= fixtures/schemas-with-element-choices-resolved
@@ -49,3 +52,8 @@
4952
(= fixtures/observation-constraints-ir-schema
5053
(sut/convert-constraints fixtures/observation-constraints
5154
[fixtures/observation-ir-schema])))))
55+
56+
(comment
57+
(fixt/load-data!)
58+
59+
@fixt/data)

0 commit comments

Comments
 (0)