Skip to content

Commit 7015dd0

Browse files
committed
bump set
1 parent 15234c6 commit 7015dd0

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

deps.edn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{:deps {org.clojars.tiensonqin/persistent-sorted-set {:mvn/version "0.0.4"}}
1+
{:deps {org.clojars.tiensonqin/persistent-sorted-set {:mvn/version "0.0.5"}}
22

33
:aliases {:1.9 {:override-deps {org.clojure/clojure {:mvn/version "1.9.0"}}}
44

src/datascript/storage.cljs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@
1919
"Read back and deserialize data stored under single `addr`"))
2020

2121
(def ^:private ^:dynamic *store-buffer*)
22+
;; unused addresses
2223
(def ^:private *delete-buffer (atom {}))
24+
;; kept addresses
25+
(def ^:private *kept-buffer (atom {}))
2326

2427
(defn serializable-datom [^Datom d]
2528
[(.-e d) (.-a d) (.-v d) (.-tx d)])
@@ -65,8 +68,13 @@
6568
;; TODO:
6669
nil)
6770

68-
(delete [_ addr]
69-
(swap! *delete-buffer update storage conj addr)))
71+
(delete [_ unused-addresses kept-addresses]
72+
(swap! *delete-buffer update storage
73+
(fn [buffer]
74+
(concat buffer (remove nil? unused-addresses))))
75+
(swap! *kept-buffer update storage
76+
(fn [buffer]
77+
(concat buffer (remove nil? kept-addresses))))))
7078

7179
(defn make-storage-adapter [storage _opts]
7280
(StorageAdapter. storage))
@@ -114,8 +122,11 @@
114122
(vswap! *store-buffer* conj! [root-addr meta])
115123
(vswap! *store-buffer* conj! [tail-addr []])
116124
(let [storage (:storage adapter)
117-
delete-addrs (get @*delete-buffer storage)
118-
_ (swap! *delete-buffer assoc storage nil)]
125+
kept-addrs (set (get @*kept-buffer storage))
126+
delete-addrs (->> (get @*delete-buffer storage)
127+
(remove kept-addrs))
128+
_ (swap! *delete-buffer assoc storage nil)
129+
_ (swap! *kept-buffer assoc storage nil)]
119130
(-store storage (persistent! @*store-buffer*) delete-addrs)))
120131
db))))
121132

0 commit comments

Comments
 (0)