mirror of
https://github.com/logseq/logseq.git
synced 2026-05-23 20:24:15 +00:00
refactor: replace both :page and :object types with :node
This commit is contained in:
@@ -100,8 +100,8 @@
|
||||
{:block/title "number property block" :build/properties {:number 5}}
|
||||
{:block/title "number-many property block" :build/properties {:number-many #{5 10}}}
|
||||
{:block/title "number-closed property block" :build/properties {:number-closed (random-closed-value :number-closed)}}
|
||||
{:block/title "object property block" :build/properties {:object [:block/uuid object-uuid]}}
|
||||
{:block/title "object-many property block" :build/properties {:object-many #{[:block/uuid object-uuid] [:page "Page object"]}}}
|
||||
{:block/title "object property block" :build/properties {:node [:block/uuid object-uuid]}}
|
||||
{:block/title "object-many property block" :build/properties {:node-many #{[:block/uuid object-uuid] [:page "Page object"]}}}
|
||||
{:block/title "page property block" :build/properties {:page [:page "Page 1"]}}
|
||||
{:block/title "page-many property block" :build/properties {:page-many #{[:page "Page 1"] [:page "Page 2"]}}}
|
||||
;; ;; :page-closed and :date-closed disabled for now since they're not supported
|
||||
@@ -122,8 +122,8 @@
|
||||
{:block/title "{{query (property :number 5)}}"}
|
||||
{:block/title "{{query (property :number-many 10)}}"}
|
||||
{:block/title (str "{{query (property :number-closed " (pr-str (get-closed-value :number-closed)) ")}}")}
|
||||
{:block/title "{{query (property :object \"block object\")}}"}
|
||||
{:block/title "{{query (property :object-many [[Page object]])}}"}
|
||||
{:block/title "{{query (property :node \"block object\")}}"}
|
||||
{:block/title "{{query (property :node-many [[Page object]])}}"}
|
||||
{:block/title "{{query (property :page [[Page 1]])}}"}
|
||||
{:block/title "{{query (property :page-many [[Page 2]])}}"}
|
||||
#_{:block/title (str "{{query (property :page-closed " (page-ref/->page-ref (string/capitalize (get-closed-value :page-closed))) ")}}")}
|
||||
@@ -142,8 +142,8 @@
|
||||
{:page {:block/title "number page" :build/properties {:number 5}}}
|
||||
{:page {:block/title "number-many page" :build/properties {:number-many #{5 10}}}}
|
||||
{:page {:block/title "number-closed page" :build/properties {:number-closed (random-closed-value :number-closed)}}}
|
||||
{:page {:block/title "object page" :build/properties {:object [:block/uuid object-uuid]}}}
|
||||
{:page {:block/title "object-many page" :build/properties {:object-many #{[:block/uuid object-uuid] [:page "Page object"]}}}}
|
||||
{:page {:block/title "object page" :build/properties {:node [:block/uuid object-uuid]}}}
|
||||
{:page {:block/title "object-many page" :build/properties {:node-many #{[:block/uuid object-uuid] [:page "Page object"]}}}}
|
||||
{:page {:block/title "page page" :build/properties {:page [:page "Page 1"]}}}
|
||||
{:page {:block/title "page-many page" :build/properties {:page-many #{[:page "Page 1"] [:page "Page 2"]}}}}
|
||||
;; #_{:page {:block/title "page-closed page" :build/properties {:page-closed (random-closed-value :page-closed)}}}
|
||||
@@ -163,8 +163,8 @@
|
||||
{:block/title "{{query (page-property :number 5)}}"}
|
||||
{:block/title "{{query (page-property :number-many 10)}}"}
|
||||
{:block/title (str "{{query (page-property :number-closed " (pr-str (get-closed-value :number-closed)) ")}}")}
|
||||
{:block/title "{{query (page-property :object \"block object\")}}"}
|
||||
{:block/title "{{query (page-property :object-many [[Page object]])}}"}
|
||||
{:block/title "{{query (page-property :node \"block object\")}}"}
|
||||
{:block/title "{{query (page-property :node-many [[Page object]])}}"}
|
||||
{:block/title "{{query (page-property :page [[Page 1]])}}"}
|
||||
{:block/title "{{query (page-property :page-many [[Page 2]])}}"}
|
||||
#_{:block/title (str "{{query (page-property :page-closed " (page-ref/->page-ref (string/capitalize (get-closed-value :page-closed))) ")}}")}
|
||||
@@ -176,14 +176,14 @@
|
||||
|
||||
;; Properties
|
||||
:properties
|
||||
(->> [:default :url :checkbox :number :page :date :object]
|
||||
(->> [:default :url :checkbox :number :page :date :node]
|
||||
(mapcat #(cond-> [[% (cond-> {:block/schema {:type %}}
|
||||
(= :object %)
|
||||
(= :node %)
|
||||
(assoc :build/schema-classes [:TestClass]))]]
|
||||
(db-property-type/property-type-allows-schema-attribute? % :cardinality)
|
||||
(conj [(keyword (str (name %) "-many"))
|
||||
(cond-> {:block/schema {:type % :cardinality :many}}
|
||||
(= :object %)
|
||||
(= :node %)
|
||||
(assoc :build/schema-classes [:TestClass]))])))
|
||||
(into (mapv #(vector (keyword (str (name %) "-closed"))
|
||||
{:block/schema {:type %}
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
* Some classes are renamed due to naming conflicts
|
||||
* All properties with their property type, url, description
|
||||
* Property type is determined by looking for the first range value that is
|
||||
a subclass of https://schema.org/DataType and then falling back to :page.
|
||||
a subclass of https://schema.org/DataType and then falling back to :node.
|
||||
* Some properties are skipped because they are superseded/deprecated or because they have a property
|
||||
type logseq doesnt' support yet
|
||||
* schema.org assumes no cardinality. For now, only :page properties are given a :cardinality :many"
|
||||
* schema.org assumes no cardinality. For now, only :node properties are given a :cardinality :many"
|
||||
(:require [logseq.outliner.cli :as outliner-cli]
|
||||
[logseq.common.util :as common-util]
|
||||
[logseq.db.frontend.property :as db-property]
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
(defn- get-schema-type [range-includes class-map]
|
||||
(some #(or (schema->logseq-data-types %)
|
||||
(when (class-map %) :page))
|
||||
(when (class-map %) :node))
|
||||
range-includes))
|
||||
|
||||
(defn- ->property-page [property-m class-map {:keys [verbose renamed-pages renamed-properties]}]
|
||||
@@ -106,25 +106,25 @@
|
||||
(println "Picked property type:"
|
||||
{:property (property-m "@id") :type schema-type :range-includes (vec range-includes)}))
|
||||
_ (assert schema-type (str "No schema found for property " (property-m "@id")))
|
||||
_ (when (= schema-type :page)
|
||||
_ (when (= schema-type :node)
|
||||
(when-let [datatype-classes (not-empty (set/intersection (set range-includes)
|
||||
(set (keys schema->logseq-data-types))))]
|
||||
(throw (ex-info (str "property " (pr-str (property-m "@id"))
|
||||
" with type :page has DataType class values which aren't supported: " datatype-classes) {}))))
|
||||
" with type :node has DataType class values which aren't supported: " datatype-classes) {}))))
|
||||
|
||||
inverted-renamed-properties (set/map-invert renamed-properties)
|
||||
class-name (strip-schema-prefix (property-m "@id"))
|
||||
url (str "https://schema.org/" (get inverted-renamed-properties class-name class-name))
|
||||
schema (cond-> {:type schema-type}
|
||||
;; This cardinality rule should be adjusted as we use schema.org more
|
||||
(= schema-type :page)
|
||||
(= schema-type :node)
|
||||
(assoc :cardinality :many)
|
||||
(property-m "rdfs:comment")
|
||||
(assoc :description (get-comment-string (property-m "rdfs:comment") renamed-pages)))]
|
||||
{(keyword (strip-schema-prefix (property-m "@id")))
|
||||
(cond-> {:block/schema schema
|
||||
:build/properties {:url url}}
|
||||
(= schema-type :page)
|
||||
(= schema-type :node)
|
||||
(assoc :build/schema-classes (mapv (comp keyword strip-schema-prefix) range-includes)))}))
|
||||
|
||||
(defn- get-class-to-properties
|
||||
@@ -269,7 +269,7 @@
|
||||
all-properties* (get-all-properties schema-data options)
|
||||
property-tuples (map #(vector (% "@id") :property) all-properties*)
|
||||
class-tuples (map #(vector (% "@id") :class) all-classes*)
|
||||
page-tuples (map #(vector (str "schema:" %) :page) existing-pages)
|
||||
page-tuples (map #(vector (str "schema:" %) :node) existing-pages)
|
||||
renamed-classes (detect-id-conflicts-and-get-renamed-classes
|
||||
property-tuples class-tuples page-tuples options)
|
||||
renamed-properties (detect-property-conflicts-and-get-renamed-properties
|
||||
|
||||
Reference in New Issue
Block a user