Skip to content

Commit 6da8be3

Browse files
committed
feat: allow transact! without store
1 parent 6d9b5f0 commit 6da8be3

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

src/datascript/core.cljc

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -512,26 +512,29 @@
512512

513513
(defn ^:no-doc -transact! [conn tx-data tx-meta]
514514
{:pre [(conn? conn)]}
515-
(let [*report (atom nil)]
515+
(let [*report (atom nil)
516+
skip-store? (:skip-store? tx-meta)
517+
tx-meta' (dissoc tx-meta :skip-store?)]
516518
(swap! conn
517519
(fn [db]
518-
(let [r (with db tx-data tx-meta)]
520+
(let [r (with db tx-data tx-meta')]
519521
(reset! *report r)
520522
(:db-after r))))
521-
(when-some [storage (storage/storage @conn)]
522-
(let [{db :db-after
523-
datoms :tx-data} @*report
524-
settings (set/settings (:eavt db))
525-
*tx-tail (:tx-tail (meta conn))
526-
tx-tail' (swap! *tx-tail conj datoms)]
527-
(if (> (transduce (map count) + 0 tx-tail') (:branching-factor settings))
523+
(when skip-store?
524+
(when-some [storage (storage/storage @conn)]
525+
(let [{db :db-after
526+
datoms :tx-data} @*report
527+
settings (set/settings (:eavt db))
528+
*tx-tail (:tx-tail (meta conn))
529+
tx-tail' (swap! *tx-tail conj datoms)]
530+
(if (> (transduce (map count) + 0 tx-tail') (:branching-factor settings))
528531
;; overflow tail
529-
(do
530-
(storage/store-impl! db (storage/storage-adapter db) false)
531-
(reset! *tx-tail [])
532-
(reset! (:db-last-stored (meta conn)) db))
532+
(do
533+
(storage/store-impl! db (storage/storage-adapter db) false)
534+
(reset! *tx-tail [])
535+
(reset! (:db-last-stored (meta conn)) db))
533536
;; just update tail
534-
(storage/store-tail db tx-tail'))))
537+
(storage/store-tail db tx-tail')))))
535538
@*report))
536539

537540
(defn transact!

0 commit comments

Comments
 (0)