|
89 | 89 | expected to be a coll if the property has a :many cardinality. validate-fn is |
90 | 90 | a fn that is called directly on each value to return a truthy value. |
91 | 91 | validate-fn varies by property type" |
92 | | - [db validate-fn [property property-val] & {:keys [new-closed-value? _skip-strict-url-validate?] |
| 92 | + [db validate-fn [property property-val] & {:keys [_skip-strict-url-validate?] |
93 | 93 | :as validate-option}] |
94 | 94 | ;; For debugging |
95 | 95 | ;; (when (not (internal-ident? (:db/ident property))) (prn :validate-val (dissoc property :property/closed-values) property-val)) |
96 | 96 | (let [validate-fn' (if (db-property-type/property-types-with-db (:logseq.property/type property)) |
97 | 97 | (fn [value] |
98 | 98 | (validate-fn db value validate-option)) |
99 | | - validate-fn) |
100 | | - validate-fn'' (if (and (db-property-type/closed-value-property-types (:logseq.property/type property)) |
101 | | - ;; new closed values aren't associated with the property yet |
102 | | - (not new-closed-value?) |
103 | | - (seq (:property/closed-values property))) |
104 | | - (fn closed-value-valid? [val] |
105 | | - (and (validate-fn' val) |
106 | | - (let [ids (set (map :db/id (:property/closed-values property))) |
107 | | - result (contains? ids val)] |
108 | | - (when-not result |
109 | | - (js/console.error (str "Error: not a closed value, id: " val ", existing choices: " ids ", property: " (:db/ident property)))) |
110 | | - result))) |
111 | | - validate-fn')] |
| 99 | + validate-fn)] |
112 | 100 | (if (db-property/many? property) |
113 | | - (or (every? validate-fn'' property-val) |
| 101 | + (or (every? validate-fn' property-val) |
114 | 102 | (empty-placeholder-value? db property (first property-val))) |
115 | | - (or (validate-fn'' property-val) |
| 103 | + (or (validate-fn' property-val) |
116 | 104 | ;; also valid if value is empty-placeholder |
117 | 105 | (empty-placeholder-value? db property property-val))))) |
118 | 106 |
|
|
0 commit comments