add validation for internal and user properties

by reusing existing schema-types for db properties
This commit is contained in:
Gabriel Horner
2023-10-06 15:18:37 -04:00
parent 83e9cda446
commit df8f16ba2c
5 changed files with 38 additions and 9 deletions

View File

@@ -3,6 +3,7 @@
(:require [logseq.db.sqlite.cli :as sqlite-cli]
[logseq.db.sqlite.db :as sqlite-db]
[logseq.db.schema :as db-schema]
[logseq.db.property :as db-property]
[datascript.core :as d]
[clojure.string :as string]
[nbb.core :as nbb]
@@ -79,14 +80,28 @@
page-attrs
page-or-block-attrs)))
(def property-page
(def internal-property
(vec
(concat
[:map {:closed false}]
[[:block/schema
[:map
{:closed false}
[:type :keyword]
[:type (apply vector :enum (into db-property/internal-builtin-schema-types
db-property/user-builtin-schema-types))]
[:hide? {:optional true} :boolean]
[:cardinality {:optional true} [:enum :one :many]]]]]
page-attrs
page-or-block-attrs)))
(def user-property
(vec
(concat
[:map {:closed false}]
[[:block/schema
[:map
{:closed false}
[:type (apply vector :enum db-property/user-builtin-schema-types)]
[:hide? {:optional true} :boolean]
[:description {:optional true} :string]
;; For any types except for :checkbox :default :template :enum
@@ -98,6 +113,12 @@
page-attrs
page-or-block-attrs)))
(def property-page
[:multi {:dispatch
(fn [m] (contains? db-property/built-in-properties-keys-str (:block/name m)))}
[true internal-property]
[::m/default user-property]])
(def page-block
[:multi {:dispatch :block/type}
[#{"property"} property-page]