datascript

seepel 2024-05-18T22:29:43.127539Z

Hi, I put together a really simple implementation of storage using an atom and it seems like my tx never increases. Do I have something mis-configured? Code in thread -> 🧵

Niki 2024-05-23T14:04:06.402759Z

Create an issue please

seepel 2024-05-23T16:59:54.721269Z

You are a machine! Thank you!

seepel 2024-05-18T22:30:01.460249Z

clj꞉user꞉> 
(require '[datascript.storage :as datascript.storage]
         '[datascript.core :as d])
nil

clj꞉user꞉> 
(def storage (atom {}))
#'user/storage

clj꞉user꞉> 
(def atom-storage
  (reify datascript.storage/IStorage
    (-store [_ pages]
      (doseq [[addr data] pages]
        (swap! storage assoc addr data)))
    (-restore [_ addr]
      (get @storage addr))
    (-list-addresses [_]
      (keys @storage))
    (-delete [_ addr]
      (swap! storage dissoc addr))))
#'user/atom-storage

clj꞉user꞉> 
(defn do-insert []
  (let [conn (or (d/restore-conn atom-storage)
                 (prn "Creating new conn")
                 (d/create-conn {} {:storage atom-storage}))]
    (:tx-data (d/transact! conn [{:db/id -1 :content "Hello, World!"}]))))
#'user/do-insert

clj꞉user꞉> 
(do-insert)
; "Creating new conn"
[#datascript/Datom [1 :content "Hello, World!" 536870913 true]]

clj꞉user꞉> 
(do-insert)
[#datascript/Datom [2 :content "Hello, World!" 536870913 true]]