mirror of https://github.com/logseq/logseq
parent
5704fc2eea
commit
fde68d9d02
|
@ -269,7 +269,19 @@
|
|||
:block/properties (assoc properties property-uuid #{v})})) ev)]
|
||||
(when (seq tx-data)
|
||||
(db/transact! repo tx-data
|
||||
{:outliner-op :save-block}))))
|
||||
{:outliner-op :save-block}))))
|
||||
|
||||
(defn- handle-cardinality-changes [repo property-uuid property property-schema]
|
||||
;; cardinality changed from :many to :one
|
||||
(if (and (= :one (:cardinality property-schema))
|
||||
(not= :one (:cardinality (:block/schema property))))
|
||||
(when (seq (model/get-block-property-values property-uuid))
|
||||
(notification/show! "Can't change a property's multiple values back to single if a property is used anywhere" :error)
|
||||
::skip-transact)
|
||||
;; cardinality changed from :one to :many
|
||||
(when (and (= :many (:cardinality property-schema))
|
||||
(not= :many (:cardinality (:block/schema property))))
|
||||
(fix-cardinality-many-values! repo property-uuid))))
|
||||
|
||||
(defn update-property!
|
||||
[repo property-uuid {:keys [property-name property-schema
|
||||
|
@ -281,21 +293,18 @@
|
|||
(when (or (not type-changed?)
|
||||
;; only change type if property hasn't been used yet
|
||||
(empty? (model/get-block-property-values property-uuid)))
|
||||
(when (and (= :many (:cardinality property-schema))
|
||||
(not= :many (:cardinality (:block/schema property))))
|
||||
;; cardinality changed from :one to :many
|
||||
(fix-cardinality-many-values! repo property-uuid))
|
||||
(let [tx-data (cond-> {:block/uuid property-uuid}
|
||||
property-name (merge
|
||||
{:block/original-name property-name
|
||||
:block/name (gp-util/page-name-sanity-lc property-name)})
|
||||
property-schema (assoc :block/schema property-schema)
|
||||
properties (assoc :block/properties
|
||||
(merge (:block/properties property)
|
||||
properties))
|
||||
true outliner-core/block-with-updated-at)]
|
||||
(db/transact! repo [tx-data]
|
||||
{:outliner-op :save-block}))))))
|
||||
(when (not= ::skip-transact (handle-cardinality-changes repo property-uuid property property-schema))
|
||||
(let [tx-data (cond-> {:block/uuid property-uuid}
|
||||
property-name (merge
|
||||
{:block/original-name property-name
|
||||
:block/name (gp-util/page-name-sanity-lc property-name)})
|
||||
property-schema (assoc :block/schema property-schema)
|
||||
properties (assoc :block/properties
|
||||
(merge (:block/properties property)
|
||||
properties))
|
||||
true outliner-core/block-with-updated-at)]
|
||||
(db/transact! repo [tx-data]
|
||||
{:outliner-op :save-block})))))))
|
||||
|
||||
(defn class-add-property!
|
||||
[repo class-uuid k-name]
|
||||
|
|
Loading…
Reference in New Issue