mirror of https://github.com/logseq/logseq
fix: use :entity type instead of :uuid for ref type values
parent
7c1f52d2a4
commit
b096b4673c
|
@ -28,7 +28,7 @@
|
|||
(let [[property-type schema-fn] e
|
||||
schema-fn' (if (db-property-type/property-types-with-db property-type) (partial schema-fn db) schema-fn)
|
||||
validation-fn #(validate-property-value property-type schema-fn' %)]
|
||||
[property-type [:tuple :uuid [:fn validation-fn]]])
|
||||
[property-type [:tuple :entity [:fn validation-fn]]])
|
||||
:else
|
||||
e)))
|
||||
db-schema))
|
||||
|
|
|
@ -46,10 +46,10 @@
|
|||
:public? true}}
|
||||
;; number (1-6) or boolean for auto heading
|
||||
:logseq.property/heading {:schema {:type :any :hide? true}}
|
||||
:logseq.property/created-from-block {:schema {:type :uuid}}
|
||||
:logseq.property/created-from-property {:schema {:type :uuid}}
|
||||
:logseq.property/created-from-template {:schema {:type :uuid}}
|
||||
:logseq.property/source-page-id {:schema {:type :uuid}}
|
||||
:logseq.property/created-from-block {:schema {:type :entity}}
|
||||
:logseq.property/created-from-property {:schema {:type :entity}}
|
||||
:logseq.property/created-from-template {:schema {:type :entity}}
|
||||
:logseq.property/source-page {:schema {:type :entity}}
|
||||
:logseq.property/built-in? {:schema {:type :checkbox}}
|
||||
:logseq.property/hide-properties? {:schema {:type :checkbox}}
|
||||
:logseq.property/query-table {:schema {:type :checkbox}}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
(def internal-built-in-property-types
|
||||
"Valid property types only for use by internal built-in-properties"
|
||||
#{:keyword :map :coll :any :uuid})
|
||||
#{:keyword :map :coll :any :uuid :entity})
|
||||
|
||||
(def user-built-in-property-types
|
||||
"Valid property types for users in order they appear in the UI"
|
||||
|
@ -60,14 +60,11 @@
|
|||
;; TODO: Confirm that macro expanded value is url when it's easier to pass data into validations
|
||||
(macro-util/macro? s))
|
||||
|
||||
(defn- logseq-block?
|
||||
(defn- entity?
|
||||
[db id]
|
||||
(some? (d/entity db id)))
|
||||
|
||||
;; FIXME: template instance check
|
||||
(defn- logseq-template?
|
||||
[db id]
|
||||
(some? (d/entity db id)))
|
||||
;; TODO: strict check on date/page/template
|
||||
|
||||
(defn- existing-closed-value-valid?
|
||||
"Validates that the given existing closed value is valid"
|
||||
|
@ -106,17 +103,20 @@
|
|||
(some-fn number? uuid?)]
|
||||
:date [:fn
|
||||
{:error/message "should be a journal date"}
|
||||
logseq-block?]
|
||||
entity?]
|
||||
:checkbox boolean?
|
||||
:url [:fn
|
||||
{:error/message "should be a URL"}
|
||||
(some-fn url? uuid? macro-url?)]
|
||||
:page [:fn
|
||||
{:error/message "should be a page"}
|
||||
logseq-block?]
|
||||
entity?]
|
||||
:template [:fn
|
||||
{:error/message "should has #template"}
|
||||
logseq-template?]
|
||||
entity?]
|
||||
:entity [:fn
|
||||
{:error/message "should be a db entity"}
|
||||
entity?]
|
||||
;; internal usage
|
||||
:keyword keyword?
|
||||
:uuid uuid?
|
||||
|
@ -132,7 +132,7 @@
|
|||
|
||||
(def property-types-with-db
|
||||
"Property types whose validation fn requires a datascript db"
|
||||
#{:date :page :template})
|
||||
#{:date :page :template :entity})
|
||||
|
||||
;; Helper fns
|
||||
;; ==========
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
(assoc :block/created-at updated-at))]
|
||||
block))
|
||||
|
||||
(def property-ref-types #{:page :block :date :object})
|
||||
(def property-ref-types #{:page :block :date :entity})
|
||||
|
||||
(defn build-new-property
|
||||
"Build a standard new property so that it is is consistent across contexts"
|
||||
|
|
|
@ -3638,7 +3638,7 @@
|
|||
(defn hidden-page->source-page
|
||||
[page]
|
||||
(or
|
||||
(:logseq.property/source-page-id page)
|
||||
(get page (pu/get-pid :logseq.property/source-page))
|
||||
;; FIXME: what if the source page has been deleted?
|
||||
page))
|
||||
|
||||
|
|
|
@ -648,6 +648,7 @@
|
|||
multiple-values? (= :many (:cardinality schema))
|
||||
class (str (when-not row? "flex flex-1 ")
|
||||
(when multiple-values? "property-value-content"))
|
||||
type (:type schema)
|
||||
type (or (when (and (= type :default) (uuid? value)) :block)
|
||||
type
|
||||
:default)
|
||||
|
@ -671,7 +672,7 @@
|
|||
(nil? (:block/_parent property-block))))
|
||||
value (if invalid-block? "" value)]
|
||||
(when (or (= type :default) invalid-block?)
|
||||
(set-editing! (assoc property :block/uuid (random-uuid)) editor-id dom-id value {:ref @*ref}))))}
|
||||
(set-editing! property editor-id dom-id value {:ref @*ref}))))}
|
||||
(if (string/blank? value)
|
||||
(if template?
|
||||
(let [id (first (:classes schema))
|
||||
|
|
|
@ -451,14 +451,14 @@
|
|||
|
||||
(defn property-create-new-block
|
||||
[block property value parse-block]
|
||||
(let [current-page-id (:block/uuid (or (:block/page block) block))
|
||||
(let [current-page-id (:db/id (or (:block/page block) block))
|
||||
page-name (str "$$$" current-page-id)
|
||||
page-entity (db/entity [:block/name page-name])
|
||||
page (or page-entity
|
||||
(-> (block/page-name->map page-name true)
|
||||
(assoc :block/type #{"hidden"}
|
||||
:block/format :markdown
|
||||
:logseq.property/source-page-id current-page-id)))
|
||||
:logseq.property/source-page current-page-id)))
|
||||
page-tx (when-not page-entity page)
|
||||
page-id [:block/uuid (:block/uuid page)]
|
||||
parent-id (db/new-block-id)
|
||||
|
@ -469,8 +469,8 @@
|
|||
:block/parent page-id
|
||||
:block/left (or (when page-entity (model/get-block-last-direct-child-id (db/get-db) (:db/id page-entity)))
|
||||
page-id)
|
||||
:logseq.property/created-from-block block
|
||||
:logseq.property/created-from-property property}
|
||||
:logseq.property/created-from-block (:db/id block)
|
||||
:logseq.property/created-from-property (:db/id property)}
|
||||
sqlite-util/block-with-timestamps)
|
||||
child-1-id (db/new-block-id)
|
||||
child-1 (-> {:block/uuid child-1-id
|
||||
|
@ -503,14 +503,14 @@
|
|||
|
||||
(defn property-create-new-block-from-template
|
||||
[block property template]
|
||||
(let [current-page-id (:block/uuid (or (:block/page block) block))
|
||||
(let [current-page-id (:db/id (or (:block/page block) block))
|
||||
page-name (str "$$$" current-page-id)
|
||||
page-entity (db/entity [:block/name page-name])
|
||||
page (or page-entity
|
||||
(-> (block/page-name->map page-name true)
|
||||
(assoc :block/type #{"hidden"}
|
||||
:block/format :markdown
|
||||
:logseq.property/source-page-id current-page-id)))
|
||||
:logseq.property/source-page current-page-id)))
|
||||
page-tx (when-not page-entity page)
|
||||
page-id [:block/uuid (:block/uuid page)]
|
||||
block-id (db/new-block-id)
|
||||
|
|
Loading…
Reference in New Issue