mirror of
https://github.com/penpot/penpot.git
synced 2025-08-06 14:38:27 +02:00
✨ Add offload mechanism for file snapshots
This commit is contained in:
parent
8dea5d5158
commit
ceaafdbb1c
13 changed files with 199 additions and 82 deletions
|
@ -17,6 +17,14 @@
|
|||
[app.util.objects-map :as omap]
|
||||
[app.util.pointer-map :as pmap]))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; OFFLOAD
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defn offloaded?
|
||||
[file]
|
||||
(= "objects-storage" (:data-backend file)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; OBJECTS-MAP
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
@ -58,18 +66,16 @@
|
|||
|
||||
(defn get-file-data
|
||||
"Get file data given a file instance."
|
||||
[system {:keys [data-backend data-ref-id] :as file} & {:keys [touch]}]
|
||||
(if (= data-backend "objects-storage")
|
||||
(let [storage (sto/resolve system ::db/reuse-conn true)
|
||||
object (sto/get-object storage data-ref-id)]
|
||||
|
||||
(when touch (sto/touch-object! storage data-ref-id))
|
||||
(sto/get-object-bytes storage object))
|
||||
[system file]
|
||||
(if (offloaded? file)
|
||||
(let [storage (sto/resolve system ::db/reuse-conn true)]
|
||||
(->> (sto/get-object storage (:data-ref-id file))
|
||||
(sto/get-object-bytes storage)))
|
||||
(:data file)))
|
||||
|
||||
(defn resolve-file-data
|
||||
[system file & {:as opts}]
|
||||
(let [data (get-file-data system file opts)]
|
||||
[system file]
|
||||
(let [data (get-file-data system file)]
|
||||
(assoc file :data data)))
|
||||
|
||||
(defn load-pointer
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue