Browse Source

enhance(cli): Add option to validate cmd to relax

closed validation of entity maps. Users probably won't care about this
as much
Gabriel Horner 2 weeks ago
parent
commit
36c361af86

+ 2 - 2
deps/cli/src/logseq/cli/commands/validate.cljs

@@ -11,9 +11,9 @@
 
 (defn- validate-db*
   "Validate datascript db as a vec of entity maps"
-  [db ent-maps* _options]
+  [db ent-maps* {:keys [closed]}]
   (let [ent-maps (db-malli-schema/update-properties-in-ents db ent-maps*)
-        explainer db-validate/closed-db-schema-explainer]
+        explainer (db-validate/get-schema-explainer closed)]
     (if-let [explanation (binding [db-malli-schema/*db-for-validate-fns* db
                                    db-malli-schema/*closed-values-validate?* true]
                            (->> (map (fn [e] (dissoc e :db/id)) ent-maps) explainer not-empty))]

+ 4 - 1
deps/cli/src/logseq/cli/spec.cljs

@@ -88,4 +88,7 @@
   {:graphs {:alias :g
             :coerce []
             :require true
-            :desc "Local graph(s) to validate"}})
+            :desc "Local graph(s) to validate"}
+   :closed {:alias :c
+            :default true
+            :desc "Validate entities have no extra keys"}})

+ 1 - 1
deps/db/src/logseq/db/frontend/validate.cljs

@@ -11,7 +11,7 @@
 (def ^:private db-schema-validator (m/validator db-malli-schema/DB))
 (def ^:private db-schema-explainer (m/explainer db-malli-schema/DB))
 (def ^:private closed-db-schema-validator (m/validator (mu/closed-schema db-malli-schema/DB)))
-(def closed-db-schema-explainer (m/explainer (mu/closed-schema db-malli-schema/DB)))
+(def ^:private closed-db-schema-explainer (m/explainer (mu/closed-schema db-malli-schema/DB)))
 
 (defn get-schema-validator
   [closed-schema?]