0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-04-12 06:51:23 -05:00

🎉 Add more helpers on srepl ns

This commit is contained in:
Andrey Antukh 2022-11-01 09:43:02 +01:00 committed by Andrés Moya
parent c027de2592
commit a42d7164ad
2 changed files with 40 additions and 4 deletions

View file

@ -30,6 +30,8 @@
[cuerdas.core :as str]
[expound.alpha :as expound]))
(def ^:dynamic *conn*)
(defn reset-password!
"Reset a password to a specific one for a concrete user or all users
if email is `:all` keyword."
@ -69,8 +71,9 @@
(update :features db/decode-pgarray #{})
(update :data blob/decode)
(cond-> migrate? (update :data pmg/migrate-data)))
file (-> (update-fn file)
(cond-> inc-revn? (update :revn inc)))]
file (binding [*conn* conn]
(-> (update-fn file)
(cond-> inc-revn? (update :revn inc))))]
(when save?
(let [features (db/create-array conn "text" (:features file))
data (blob/encode (:data file))]

View file

@ -16,7 +16,9 @@
[app.rpc.queries.profile :as profile]
[app.srepl.fixes :as f]
[app.srepl.helpers :as h]
[app.util.blob :as blob]
[app.util.objects-map :as omap]
[app.util.pointer-map :as pmap]
[app.util.time :as dt]
[clojure.pprint :refer [pprint]]
[cuerdas.core :as str]))
@ -103,12 +105,15 @@
(db/delete! conn :http-session {:profile-id (:id profile)})
:blocked))))
(defn enable-objects-map-on-file
(defn enable-objects-map-feature-on-file!
[system & {:keys [save? id]}]
(letfn [(update-file [{:keys [features] :as file}]
(if (contains? features "storage/objects-map")
file
(update file :data migrate-to-omap)))
(-> file
(update :data migrate-to-omap)
(update :features conj "storage/objects-map"))))
(migrate-to-omap [data]
(-> data
@ -119,3 +124,31 @@
:id id
:update-fn update-file
:save? save?)))
(defn enable-pointer-map-feature-on-file!
[system & {:keys [save? id]}]
(letfn [(update-file [{:keys [features id] :as file}]
(if (contains? features "storage/pointer-map")
file
(-> file
(update :data migrate-to-omap id)
(update :features conj "storage/pointer-map"))))
(migrate-to-omap [data file-id]
(binding [pmap/*tracked* (atom {})
pmap/*metadata* {:file-id file-id}]
(let [data (-> data
(update :pages-index update-vals pmap/wrap)
(update :components pmap/wrap))]
(doseq [[id item] @pmap/*tracked*]
(db/insert! h/*conn* :file-data-fragment
{:id id
:file-id file-id
:metadata (-> item meta db/tjson)
:content (-> item deref blob/encode)}))
data)))]
(h/update-file! system
:id id
:update-fn update-file
:save? save?)))